配置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的FTP学习(三)
Oct 09 PHP
在Windows系统上安装PHP运行环境文字教程
Jul 19 PHP
用C/C++扩展你的PHP 为你的php增加功能
Sep 06 PHP
php中autoload的用法总结
Nov 08 PHP
php中hashtable实现示例分享
Feb 13 PHP
如何使用php实现评委评分器
Jul 31 PHP
WordPress中登陆后关闭登陆页面及设置用户不可见栏目
Dec 31 PHP
php each 返回数组中当前的键值对并将数组指针向前移动一步实例
Nov 22 PHP
php表单文件iframe异步上传实例讲解
Jul 26 PHP
PHP PDO数据库操作预处理与注意事项
Mar 16 PHP
使用composer 安装 laravel框架的方法图文详解
Aug 02 PHP
PHP实现发送微博消息功能完整示例
Dec 04 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
基于magic_quotes_gpc与magic_quotes_runtime的区别与使用介绍
2013/04/22 PHP
解析php php_openssl.dll的作用
2013/07/01 PHP
php加密算法之实现可逆加密算法和解密分享
2014/01/21 PHP
PHP使用DirectoryIterator显示下拉文件列表的方法
2015/03/13 PHP
PHP中$_SERVER使用说明
2015/07/05 PHP
js正确获取元素样式详解
2009/08/07 Javascript
jquery ajax 检测用户注册时用户名是否存在
2009/11/03 Javascript
基于jquery的关于动态创建DOM元素的问题
2010/12/24 Javascript
js中复制行和删除行的操作实例
2013/06/25 Javascript
jquery ui dialog实现弹窗特效的思路及代码
2013/08/03 Javascript
Js操作Select大全(取值、设置选中等等)
2013/10/29 Javascript
js history对象简单实现返回和前进
2013/10/30 Javascript
jQuery选择器源码解读(七):elementMatcher函数
2015/03/31 Javascript
JavaScript淡入淡出渐变简单实例
2015/08/06 Javascript
在网页中插入百度地图的步骤详解
2016/12/02 Javascript
浅谈Nodejs中的作用域问题
2016/12/26 NodeJs
js实现tab切换效果
2017/02/16 Javascript
从零开始学习Node.js系列教程四:多页面实现数学运算的client端和server端示例
2017/04/13 Javascript
jQuery Validate 无法验证 chosen-select元素的解决方法
2017/05/17 jQuery
vue2组件之select2调用的示例代码
2017/10/12 Javascript
js实现鼠标移动到图片产生遮罩效果
2017/10/21 Javascript
VuePress 静态网站生成方法步骤
2019/02/14 Javascript
jsonp跨域获取百度联想词的方法分析
2019/05/13 Javascript
vue使用微信JS-SDK实现分享功能
2019/08/23 Javascript
微信小程序将页面按钮悬浮固定在底部的实现代码
2020/10/29 Javascript
Python实现二分法算法实例
2015/02/02 Python
python处理DICOM并计算三维模型体积
2019/02/26 Python
Numpy ndarray 多维数组对象的使用
2021/02/10 Python
python爬取youtube视频的示例代码
2021/03/03 Python
使用HTML5 IndexDB存储图像和文件的示例
2018/11/05 HTML / CSS
亚马逊加拿大网站:Amazon.ca
2020/01/06 全球购物
Big Green Smile法国:领先的英国有机和天然产品在线商店
2021/01/02 全球购物
退休感言
2014/01/28 职场文书
人事科岗位职责范本
2014/03/02 职场文书
新闻专业毕业生英文求职信
2014/03/19 职场文书
相亲大会策划方案
2014/06/05 职场文书