配置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来处理多个提交任务
Oct 09 PHP
PHP如何抛出异常处理错误
Mar 02 PHP
判断PHP数组是否为空的代码
Sep 08 PHP
PHP设计模式 注册表模式(多个类的注册)
Feb 05 PHP
PHP 使用pcntl和libevent 实现Timer功能
Oct 27 PHP
PHP计算一年多少个星期和每周的开始和结束日期
Jul 01 PHP
php的ddos攻击解决方法
Jan 08 PHP
使用GDB调试PHP代码,解决PHP代码死循环问题
Mar 02 PHP
php两种无限分类方法实例
Apr 21 PHP
php 函数使用可变数量的参数方法
May 02 PHP
PHP简单实现二维数组的矩阵转置操作示例
Nov 24 PHP
PHP实现获取毫秒时间戳的方法【使用microtime()函数】
Mar 01 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导出MySQL数据到Excel文件(fputcsv)
2011/07/03 PHP
php中修改浏览器的User-Agent来伪装你的浏览器和操作系统
2011/07/29 PHP
[原创]php常用字符串输出方法分析(echo,print,printf及sprintf)
2016/07/09 PHP
yii2项目实战之restful api授权验证详解
2017/05/20 PHP
表单项的name命名为submit、reset引起的问题
2007/12/22 Javascript
jQuery实现鼠标滑过遮罩并高亮显示效果
2013/07/16 Javascript
在jquery中combobox多选的不兼容问题总结
2013/12/24 Javascript
jQuery超酷平面式时钟效果代码分享
2020/03/30 Javascript
Base64(二进制)图片编码解析及在各种浏览器的兼容性处理
2017/02/09 Javascript
JS+html5 canvas实现的简单绘制折线图效果示例
2017/03/13 Javascript
Angular实现较为复杂的表格过滤,删除功能示例
2017/12/23 Javascript
Vue底层实现原理总结
2018/02/17 Javascript
Vue-cli项目获取本地json文件数据的实例
2018/03/07 Javascript
Nodejs中的JWT和Session的使用
2018/08/21 NodeJs
分享Python开发中要注意的十个小贴士
2016/08/30 Python
Python中遍历列表的方法总结
2019/06/27 Python
PyTorch中 tensor.detach() 和 tensor.data 的区别详解
2020/01/06 Python
详解pandas中iloc, loc和ix的区别和联系
2020/03/09 Python
win10从零安装配置pytorch全过程图文详解
2020/05/08 Python
基于python实现地址和经纬度转换
2020/05/19 Python
django的autoreload机制实现
2020/06/03 Python
CSS3 完美实现圆角效果
2009/07/13 HTML / CSS
英国拳击装备购物网站:RDX Sports
2018/01/23 全球购物
施华洛世奇日本官网:SWAROVSKI日本
2018/05/04 全球购物
Koral官方网站:女性时尚运动服
2019/04/10 全球购物
幼儿园的门卫岗位职责
2014/04/10 职场文书
学校三节实施方案
2014/06/09 职场文书
退休党员个人对照检查材料思想汇报
2014/09/29 职场文书
质量整改报告范文
2014/11/08 职场文书
2015社区健康教育工作总结
2015/05/20 职场文书
父亲节感言
2015/08/03 职场文书
大学生团支书竞选稿
2015/11/21 职场文书
求职自我评价参考范文
2019/05/16 职场文书
详解Python牛顿插值法
2021/05/11 Python
vue3 自定义图片放大器效果的示例代码
2022/07/23 Vue.js
TypeScript 内置高级类型编程示例
2022/09/23 Javascript