Apache2.2+MySQL5.0+PHP5.2+Mambors5.0安装笔记与故障解决

想不到重拾PHP竟然遇到了这么多问题,折腾了一个晚上,所幸总算成功了。为了以后不再花这么长时间,还是记个流水账吧。

步骤:

1、下载资源

1 - MySQL5.0, http://sq5.onlinedown.net/down/mysql-5.0.37-win32.zip;

2 - Apache2.2, http://sq3.onlinedown.net/down/apache_2.2.4-win32-x86-no_ssl.zip

3 - PHP5.2, http://www.php.net/get/php-5.2.1-win32-installer.msi/from/this/mirror

4 - Mambors5.0, http://www.mambochina.net/option,com_remository/Itemid,31/func,download/id,196/chk_0fe55fc41710c8bc9ad4c901a0a3cc49.html

2、安装配置以及遇到的问题

1 - 安装MySQL5.0,过程正常。但是在配置服务的最后一步Execute时,报告错误:Can't connect to MySQL server on 'localhost' (10061) 根据提示知道,原来我机器上原来安装过MySQL,并且这次安装在同一目录,过去的数据文件仍然存在,而其中保存有原来安装的MySQL的root密码,这次的密码不一样,所以无法启动。

解决办法:干脆把MySQL卸了,把data目录也删除了,重新安装,一切顺利。

注:产生此错误的其他可能原因:hosts文件中,localhost不指向127.0.0.1

2 - 安装Apache2.2,很顺利,安装完之后访问http://localhost,显示It works!,说明Apache没有问题。

3 - 安装PHP5.2,主要耗费的时间都在这里,主要原因是安装时沿用了老习惯<完全安装>。安装完之后,开始配置:

a - 新建一个test.php文件在apache/htdocs目录下,内容很简单,如下:

<?php

phpinfo();

?>

浏览http://localhost/test.php,显示的是源文本,开始配置apache的php module;

b - 在apache/conf/extra下新建httpd-php5.conf,内容如下:

LoadModule php5_module "D:/PHP/php5apache2_2.dll"

AddType application/x-httpd-php .php

AddType application/x-httpd-php-source .phps

DirectoryIndex index.php

PHPIniDir "D:/PHP"

c - 修改apache/conf/httpd.conf,在最后加入:

#BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL

Include conf/extra/httpd-php5.conf

#END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL

d - 修改apache/conf/httpd.conf:

查找:

 DirectoryIndex index.html

 替换成:

 DirectoryIndex index.html index.htm index.php default.php

e - 修改php.ini:

 查找:

 extension_dir = "./"

 替换:

 extension_dir = "d:/local/php/ext/"

 查找:

 ;extension=php_mbstring.dll

 ;extension=php_gd2.dll

 ;extension=mysql.dll

 将前面的;号去掉。

 查找:

 ;date.timezone =

 替换:

 date.timezone = PRC

f - 重启Apache,发现在停止时httpd抛出异常,并终止,但可以启动apache,并显示状态“Apache/2.2.4 (win32) PHP/5.2.1”,打开http://localhost/test.php,显示空白页。查阅PHP Manual的installation faq:

7. Unix/Windows: I have installed PHP, but when I try to access a PHP script file via my browser, I get a blank screen.

Do a 'view source' in the web browser and you will probably find that you can see the source code of your PHP script. This means that the web server did not send the script to PHP for interpretation. Something is wrong with the server configuration - double check the server configuration against the PHP installation instructions.

一直以为是配置问题,下面省略反复安装/卸载,改配置若干回合(>3),然后才猛然醒悟,为啥不看看apache 的log呢,打开apache/logs/error.log,果然发现:

...[error] [client 192.9.100.40] PHP Warning: require_once(SAM/php_sam.php) [function.require-once]: failed to open stream: No such file or directory in sam_factory on line 1

...[error] [client 192.9.100.40] PHP Fatal error: require_once() [function.require]: Failed opening required 'SAM/php_sam.php' (include_path='.;D:\\php\\pear') in sam_factory on line 1

然后赶紧google,http://drupal.org/node/119623 这篇帖子比较好的阐述了该问题,按照他的解决办法,把extension=php_sam.dll注释掉。重新启动apache,再次访问http://localhost/test.php。结果显示了一小半页面,httpd就抛异常挂了,继续检查error.log,已经明白问题产生的原因了,都怪自己太贪心,安装php时extensions选择的太多了,缺省或者只选择必需的几个就不会有问题,web server setup也只需要选择apache 2.2.x module,注意如果全部选择,安装过程会有错误,只是我开始时没意识到,仅仅做了个修复安装(repair)就以为没问题了。

g - 重新change安装PHP之后,重启apache,浏览http://localhost/test.php显示正常。

4 - 安装并配置Mambors5.0,首先解压到d:/mambors,开始修改apache配置httpd.conf:

查找

d:\apache\htdocs

替换

d:/mambors

修改php.ini:

doc_root = d:/mambors

error_reporting = E_ALL

display_errors = On

5 - 打开http://localhost/,根据向导一步步完成安装,但是在完成之后打开管理站点时,却发现有两个问题:

a - 站点名称显示乱码

b - 页面开始处有好几条:

 Notice: Undefined variable: return in d:\mambors\includes\mambo.php on line 2002

这两个问题比较好解决:

a - 这是因为mysql的缺省字符编码配置问题,打开my.ini,在最后加入:

default-charset=utf8

default-character-set=utf8

default-collation=utf8_general_ci

b - 打开mambo.php文件,第2002行

$return= addslashes( $return);

修改成

$arr[$name] = addslashes( $arr[$name]);

从逻辑上看也只有这样比较合理,如果不行我就再换成$def,结果再进入管理站点,效果让我非常满意。

好了,总算完成个初步了,得出以下教训:

1、别被表面现象所迷惑,多看看log;

2、不要放过过程中的小问题,如果在安装php时仔细一点就不会浪费这么长时间解决问题了;

3、动手之前先回顾或参考一下已有的经验,如果早把my.ini设置好了,也就省的重配一回mambo了;

4、当然,纪录是必要的,好记性不如烂笔头。