配置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表单递交控件名称含有点号(.)会被转化为下划线(_)的处理方法
Jan 06 PHP
探讨PHP使用eAccelerator的API开发详解
Jun 09 PHP
PHP微信红包生成代码分享
Oct 06 PHP
php中让人头疼的浮点数运算分析
Oct 10 PHP
php mysql_real_escape_string addslashes及mysql绑定参数防SQL注入攻击
Dec 23 PHP
PHP实现电商订单自动确认收货redis队列
May 17 PHP
PHP substr()函数参数解释及用法讲解
Nov 23 PHP
Laravel如何使用Redis共享Session
Feb 23 PHP
详解php中生成标准uuid(guid)的方法
Apr 28 PHP
PHP二维索引数组的遍历实例分析【2种方式】
Jun 24 PHP
php解压缩zip和rar压缩包文件的方法
Jul 10 PHP
Thinkphp5.0 框架视图view的比较标签用法分析
Oct 12 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
弄了个检测传输的参数是否为数字的Function
2006/12/06 PHP
php+AJAX传送中文会导致乱码的问题的解决方法
2008/09/08 PHP
在php中判断一个请求是ajax请求还是普通请求的方法
2011/06/28 PHP
div li的多行多列 无刷新分页示例代码
2013/10/16 PHP
php一行代码获取文件后缀名实例分析
2014/11/12 PHP
php中current、next与reset函数用法实例
2014/11/17 PHP
javascript 一段左右两边随屏滚动的代码
2009/06/18 Javascript
基于Jquery的简单&amp;简陋Tabs插件代码
2010/02/09 Javascript
jQuery对象和DOM对象使用说明
2010/06/25 Javascript
jquery 获取dom固定元素 添加样式的简单实例
2014/02/04 Javascript
一张表格告诉你windows.onload()与$(document).ready()的区别
2014/05/16 Javascript
js拼接html注意问题示例探讨
2014/07/14 Javascript
基于JavaScript获取鼠标位置的各种方法
2015/12/16 Javascript
原生JS实现多个小球碰撞反弹效果示例
2018/01/31 Javascript
实例讲解JavaScript预编译流程
2019/01/24 Javascript
vue实现滑动切换效果(仅在手机模式下可用)
2020/06/29 Javascript
微信小程序实现身份证取景框拍摄
2020/09/09 Javascript
python实现网页链接提取的方法分享
2014/02/25 Python
Python中字符串对齐方法介绍
2015/05/21 Python
python使用正则表达式替换匹配成功的组
2017/11/17 Python
Python二叉树的定义及常用遍历算法分析
2017/11/24 Python
python定时按日期备份MySQL数据并压缩
2019/04/19 Python
Python中Numpy mat的使用详解
2019/05/24 Python
python如何使用Redis构建分布式锁
2020/01/16 Python
Java Spring项目国际化(i18n)详细方法与实例
2020/03/20 Python
python能开发游戏吗
2020/06/11 Python
python 录制系统声音的示例
2020/12/21 Python
工程力学专业自荐信范文
2014/03/17 职场文书
文明城市标语
2014/06/16 职场文书
电子专业自荐信
2014/07/01 职场文书
师德承诺书2015
2015/04/28 职场文书
学校隐患排查制度
2015/08/05 职场文书
2016拓展训练心得体会范文
2016/01/12 职场文书
Go语言中的UTF-8实现
2021/04/26 Golang
python基于turtle绘制几何图形
2021/06/15 Python
十大最强火系宝可梦,喷火龙上榜,第一名有双火属性
2022/03/18 日漫