配置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 相关文章推荐
PHP Session变量不能传送到下一页的解决方法
Nov 27 PHP
php代码收集表单内容并写入文件的代码
Jan 29 PHP
关于PHP session 存储方式的详细介绍
Jun 25 PHP
解密ThinkPHP3.1.2版本之模块和操作映射
Jun 19 PHP
php的ZipArchive类用法实例
Oct 20 PHP
php实现读取手机客户端浏览器的类
Jan 09 PHP
php生成验证码函数
Oct 20 PHP
在Mac OS的PHP环境下安装配置MemCache的全过程解析
Feb 15 PHP
laravel中的错误与日志用法详解
Jul 26 PHP
php PDO实现的事务回滚示例
Mar 23 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
Feb 08 PHP
PHP实现的支付宝支付功能示例
Mar 26 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中HTTP方式下的Gzip压缩传输方法举偶
2007/02/15 PHP
二招解决php乱码问题
2012/03/25 PHP
PHP将XML转数组过程详解
2013/11/13 PHP
Codeigniter(CI)框架分页函数及相关知识
2014/11/03 PHP
php实现的XML操作(读取)封装类完整实例
2017/02/23 PHP
windows下的WAMP环境搭建图文教程(推荐)
2017/07/27 PHP
PHP数据库编程之MySQL优化策略概述
2017/08/16 PHP
js实现倒计时(距离结束还有)示例代码
2013/07/24 Javascript
js取消单选按钮选中示例代码
2013/11/14 Javascript
javascript中数组的冒泡排序使用示例
2013/12/18 Javascript
Jquery 实现checkbox全选方法
2015/01/28 Javascript
jquery实现带缩略图的可定制高度画廊效果(5种)
2015/08/28 Javascript
微信jssdk在iframe页面失效问题的解决措施
2016/03/03 Javascript
详细讲解JavaScript中的this绑定
2016/10/10 Javascript
js实现密码强度检验
2017/01/15 Javascript
layui表格实现代码
2017/05/20 Javascript
vue脚手架搭建过程图解
2018/06/06 Javascript
jQuery点击页面其他部分隐藏下拉菜单功能
2018/11/27 jQuery
Node.js创建一个Express服务的方法详解
2020/01/06 Javascript
JavaScript写个贪吃蛇小游戏(超详细)
2020/03/17 Javascript
[04:22]DOTA2大事件之护国神翼
2020/08/14 DOTA
使用Mixin设计模式进行Python编程的方法讲解
2016/06/21 Python
python对绑定事件的鼠标、按键的判断实例
2019/07/17 Python
解决Django Static内容不能加载显示的问题
2019/07/28 Python
python编写实现抽奖器
2020/09/10 Python
美国最大的城市服装和运动鞋零售商:Jimmy Jazz
2016/11/19 全球购物
美国购买和销售礼品卡平台:Raise
2017/01/13 全球购物
美国演唱会和体育门票购买网站:Ticketnetwork
2018/10/19 全球购物
网吧消防安全制度
2014/01/28 职场文书
我为自己代言广告词
2014/03/18 职场文书
高三语文复习计划
2015/01/19 职场文书
紧急迫降观后感
2015/06/15 职场文书
学习社交礼仪心得体会
2016/01/22 职场文书
2019年中,最受大众欢迎的6本新书
2019/08/07 职场文书
话题作文之关于呼唤
2019/11/29 职场文书
python开发飞机大战游戏
2021/07/15 Python