配置Apache2.2+PHP5+CakePHP1.2+MySQL5运行环境


Posted in PHP onApril 25, 2009

1. 安装配置Apahce

安装配置Apache是比较简单的, 跟着安装向导一步步往下走就能搞定。最多就是在配置端口的地方需要注意一下,如果已经安装了其它Web服务器占用了80端口,那记得配置的时候选一个别的端口。向导中忘了设置,在Apache的conf/httpd.conf中修改下面这句就好:

Listen 127.0.0.1:80

2. 安装配置PHP5

PHP5也是一路安装就完了。要让Apache能解释PHP页面,继续修改Apache的conf/httpd.conf文件。 首先,假设PHP5是安装在D:\php5目录。

首先是要在Apache中载入PHP5的模块,加下面这句:

LoadModule php5_module d:/php5/php5apache2_2.dll

然后是让Apache认识PHP页面的Mime,找到<IfModule mime_module>块,在这个块里加一句AddType语句:

<IfModule mime_module>
    ...
    AddType application/x-httpd-php .php
    ...
</IfModule>

最后还要把index.php设置成默认页面,这样在浏览时没指定页面的情况下会自动找到index.php。找到<IfModule dir_module>块,修改里面的DirectoryIndex配置:

<IfModule dir_module>
    DirectoryIndex index.html index.htm index.php
</IfModule>

这里要注意默认页面的顺序,按上面的配置,如果一个目录下同时存在index.html和index.php的情况下,会优先找到并打开index.html。

最后还要让Apache能找到PHP的配置。一般说法是把php.ini拷贝到Windows目录下,但是我宁愿在Apache中配置这个位置: 

<IfModule php5_module>
    PHPIniDir d:/php5/php.ini
</IfModule>

好了,现在PHP应该配置完了,写个最简单的PHP试试看——启动或重启Apache服务器,在Apache的htdocs目录下去新建个phpinfo.php文件(如果修改了DocumentRoot,就根据修改后的DocumentRoot决定位置),内容如下:

<?
phpinfo();
?>

现在打开浏览器看看http://localhost/phpinfo.php(非默认端口记得写端口号),看看效果。

3. 安装配置CakePHP

所谓安装,其实就是解压而已。先把CakePHP解压到D:\cakephp,那么CakePHP解压出来的目录结构大概是这个样子:

D:\CakePHP

.htaccess


index.php


README


├──app

└──webroot


├──cake
└──vendors

从Google上的各种资料来查看,Web应用的大概有三种配置方式,连介绍的顺序都没变过。其中第二种,也就是不改变CakePHP的目录结构,也有一定安全性的一种,我觉得还不错,采用了。

先要把CakePHP下面的app/webroot目录设置成Apache的DocumentRoot;然后要打开rewrite模块(去掉注释符号);还要配置DocumentRoot目录的AllowOverride属性改为All。那么要修改Apache的配置文件的下面这些内容:

...
LoadModule rewrite_module modules/mod_rewrite.so
...
DocumentRoot "D:/cakephp/app/webroot"
...
<Directory "D:/cakephp/app/webroot">
    AllowOverride All   
</Directory>
...

然后再次重启Apache,访问http://localhost/试试,这时候应该能显示CakePHP的一些信息了。

如果配置CakePHP的时候采用的高级配置,在试运行的时候可能会遇到页面上有如下这样的警告:

Warning (512): Cache not configured properly. ...
Warning (2): array_merge() [function.array-merge]: ...
Warning (2): array_merge() [function.array-merge]: ...

遇到这个问题我真是头大,查了半天资料,结果在几乎绝望的时候,不知道在哪里看到一则信息,说是要让APP下的tmp/cache/persistent目录有写权限。查看了一下,原来tmp并不存在cache目录,所以自己创建了cache/persistent目录。如果在在Linux目录下,还要给这个目录777权限。

4. 安装配置MySQL

MySQL的安装也很简单,安装完之后也有向导配置一些东西。这些都是数据库上的事情,根据向导一步步操作就好。关键是要让PHP和CakePHP能使用MySQL数据库。

关于PHP中的配置,直接修改php.ini,把extension=php_mysql.dll前面的注释符号去掉,也就是

...
extension=php_mysql.dll
...

然后把刚才写的phpinfo.php拷贝到CakePHP的app/webroot下面来,再浏览一次http://localhost/phpinfo.php,看看页面中有没有关于MySQL的配置信息——多半没得。因为还少做了点事情——我很郁闷,这里就耽误了我半天时间。

PHP5目录下有一大堆DLL,直接把这些DLL拷贝到Apache的bin目录下去(如果你的PHP5目录在PATH中,也许不用这么麻烦)。现在再看看,页面上应该有MySQL的配置信息了吧。

CakePHP的配置在app目录下的config/database.php中。没发现这个文件么?有没有看到一个database.php.default?把它拷贝一份更名为database.php就好。然后当然还要改点东西。

这个配置里只有一个DATABASE_CONFIG类,它有一个$default变量,保存就是默认数据库的配置信息。差不多配置成这个样子:

var $default = array(
    'driver' => 'mysql',
    'persistent' => false,
    'host' => 'localhost',
    'login' => 'your-username',
    'password' => 'your-password',
    'database' => 'your-database',
    'prefix' => '',
);

注意login、password和database三项根据实际情况来配置。配置完成后浏览http://localhost/,这个页面上应该有一句“Your database configuration file is present. ”。如果你的数据库准备好了,会看到“Cake is able to connect to the database.”;如果没准备好,可能会看到一些警告或者错误消息。

小结

这个配置真是累死人。谁有兴趣做个完整安装包吧,根据安装位置自动配置,多好!或者做个GUI或者Web界面的配置程序也不错。

PHP 相关文章推荐
多文件上传的例子
Oct 09 PHP
几种显示数据的方法的比较
Oct 09 PHP
解决phpmyadmin 乱码,支持gb2312和utf-8
Nov 20 PHP
PHP mkdir()定义和用法
Jan 14 PHP
浅析php与数据库代码开发规范
Aug 08 PHP
ThinkPHP CURD方法之page方法详解
Jun 18 PHP
简单实用的PHP防注入类实例
Dec 05 PHP
Yii2框架引用bootstrap中日期插件yii2-date-picker的方法
Jan 09 PHP
php执行多个存储过程的方法【基于thinkPHP】
Nov 08 PHP
thinkphp整合微信支付代码分享
Nov 24 PHP
Laravel中encrypt和decrypt的实现方法
Sep 24 PHP
ThinkPHP 框架实现的读取excel导入数据库操作示例
Apr 14 PHP
Uchome1.2 1.5 代码学习 common.php
Apr 24 #PHP
mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
Apr 24 #PHP
PHP 危险函数解释 分析
Apr 22 #PHP
php反弹shell实现代码
Apr 22 #PHP
将数组写入txt文件 var_export
Apr 21 #PHP
php 保留小数点
Apr 21 #PHP
PHP 中执行排序与 MySQL 中排序
Apr 21 #PHP
You might like
PHP删除特定数组内容并且重建数组索引的方法.
2011/03/25 PHP
php实现的css文件背景图片下载器代码
2014/11/11 PHP
PHP使用Pthread实现的多线程操作实例
2015/11/14 PHP
推荐自用 Javascript 缩图函数 (onDOMLoaded)……
2007/10/23 Javascript
HTML代码中标签的全部属性 中文注释说明
2009/03/26 Javascript
让GoogleCode的SVN下的HTML文件在FireFox下正常显示.
2009/05/25 Javascript
Javascript异步表单提交,图片上传,兼容异步模拟ajax技术
2010/05/10 Javascript
JS获取节点的兄弟,父级,子级元素的方法
2014/01/09 Javascript
js中substr,substring,indexOf,lastIndexOf,split,replace的用法详解
2015/11/09 Javascript
AngularJS 获取ng-repeat动态生成的ng-model值实例详解
2016/11/29 Javascript
AngularJs中 ng-repeat指令中实现含有自定义指令的动态html的方法
2017/01/19 Javascript
vue.js实现的全选与全不选功能示例【基于elementui】
2018/12/03 Javascript
详解BootStrap表单验证中重置BootStrap-select验证提示不清除的坑
2019/09/17 Javascript
基于leaflet.js实现修改地图主题样式的流程分析
2020/05/15 Javascript
[00:05]ChinaJoy现场 DOTA2玩家高呼“CN DOTA BEST DOTA”
2019/08/04 DOTA
Python中sort和sorted函数代码解析
2018/01/25 Python
详谈python在windows中的文件路径问题
2018/04/28 Python
Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】
2019/10/12 Python
解决python 读取 log日志的编码问题
2019/12/24 Python
PyCharm取消波浪线、下划线和中划线的实现
2020/03/03 Python
python:HDF和CSV存储优劣对比分析
2020/06/08 Python
Python如何避免文件同名产生覆盖
2020/06/09 Python
css3.0新属性效果在ie下的解决方案
2010/05/10 HTML / CSS
表单button的outline在firefox浏览器下的问题
2012/12/24 HTML / CSS
让IE支持HTML5的方法
2012/12/11 HTML / CSS
h5调用摄像头的实现方法
2016/06/01 HTML / CSS
特步官方商城:Xtep
2017/03/21 全球购物
英国水族馆和池塘用品购物网站:Warehouse Aquatics
2019/08/29 全球购物
经典c++面试题二
2015/08/14 面试题
乡镇镇长个人整改措施
2014/10/01 职场文书
2014乡镇机关党员个人对照检查材料思想汇报
2014/10/09 职场文书
交警失职检讨书
2015/01/26 职场文书
工会工作个人总结
2015/03/03 职场文书
什么是求职信?求职信应包含哪些内容?
2019/08/14 职场文书
教你使用Python获取QQ音乐某个歌手的歌单
2022/04/03 Python
vue中控制mock在开发环境使用,在生产环境禁用方式
2022/04/06 Vue.js