配置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 相关文章推荐
服务器端解压缩zip的脚本
Dec 22 PHP
PHP 身份证号验证函数
May 07 PHP
GBK的页面输出JSON格式的php函数
Feb 16 PHP
PHP中开发XML应用程序之基础篇 添加节点 删除节点 查询节点 查询节
Jul 09 PHP
关于PHPDocument 代码注释规范的总结
Jun 25 PHP
解析CI的AJAX分页 另类实现方法
Jun 27 PHP
PHP判断文章里是否有图片的简单方法
Jul 26 PHP
php最简单的删除目录与文件实现方法
Nov 28 PHP
php生成固定长度纯数字编码的方法
Jul 09 PHP
ThinkPHP模型详解
Jul 27 PHP
Laravel中unique和exists验证规则的优化详解
Jan 28 PHP
PHP与Web页面交互操作实例分析
Jun 02 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
记录Yii2框架开发微信公众号遇到的问题及解决方法
2018/07/20 PHP
Javascript计算时间差的函数分享
2011/07/04 Javascript
当json键为数字时的取值方法解析
2013/11/15 Javascript
jQuery制作拼图小游戏
2015/01/12 Javascript
Nodejs学习笔记之Global Objects全局对象
2015/01/13 NodeJs
JS字符串false转boolean的方法(推荐)
2017/03/08 Javascript
深入理解js 中async 函数的含义和用法
2018/05/13 Javascript
详解滑动穿透(锁body)终极探索
2019/04/16 Javascript
移动端 Vue+Vant 的Uploader 实现上传、压缩、旋转图片功能
2019/06/10 Javascript
vue中使用百度脑图kityminder-core二次开发的实现
2019/09/26 Javascript
处理JavaScript值为undefined的7个小技巧
2020/07/28 Javascript
解决vue-router路由拦截造成死循环问题
2020/08/05 Javascript
[39:52]2018DOTA2亚洲邀请赛 4.3 突围赛 EG vs Newbee 第一场
2018/04/04 DOTA
Python操作sqlite3快速、安全插入数据(防注入)的实例
2014/04/26 Python
Python内置模块hashlib、hmac与uuid用法分析
2018/02/12 Python
对python3 urllib包与http包的使用详解
2018/05/10 Python
pycharm重置设置,恢复默认设置的方法
2018/10/22 Python
使用Python和Prometheus跟踪天气的使用方法
2019/05/06 Python
python3 写一个WAV音频文件播放器的代码
2019/09/27 Python
opencv之为图像添加边界的方法示例
2019/12/26 Python
Django密码存储策略分析
2020/01/09 Python
Pandas时间序列基础详解(转换,索引,切片)
2020/02/26 Python
Python 合并拼接字符串的方法
2020/07/28 Python
Python使用xpath实现图片爬取
2020/09/16 Python
python 爬虫基本使用——统计杭电oj题目正确率并排序
2020/10/26 Python
HTML5新增属性data-*和js/jquery之间的交互及注意事项
2017/08/08 HTML / CSS
YSL圣罗兰美妆美国官网:Yves Saint Lauret US
2016/11/21 全球购物
全球最大的网上自行车商店:Chain Reaction Cycles
2016/12/02 全球购物
Skyscanner香港:机票比价, 平机票和廉价航空机票预订
2020/02/07 全球购物
英国时尚和家居用品零售商:Matalan
2021/02/28 全球购物
更夫岗位责任制
2014/02/11 职场文书
奥巴马竞选演讲稿
2014/05/15 职场文书
医院领导班子整改方案
2014/10/01 职场文书
单位作风建设剖析材料
2014/10/11 职场文书
史上最全书信经典范文大全(建议收藏)
2019/07/10 职场文书
创业计划书之网吧
2019/10/10 职场文书