PHP5竟与Apache 2.2不兼容
昨天晚上(应该说今天早晨)睡不着觉,就在服务器上面瞎折腾。
突发奇想想弄一个SSL安全连接,在网上找到了相关的教程,教程里面提到了Apache 2.2.2,我回头一看服务器,才2.0.53,哇,原来我已经落后这么多了,赶快升级。上Apache的网站上一看,哦,原来已经有2.2.3了,看来落后的不止我一个人(五十步笑百步?)。以迅雷不及掩耳盗铃的速度下载好了Apache,备份httpd.conf,安装至2.0的目录(事实证明,没有先拆卸2.0是最大的失误,最终导致服务混乱)。
咦?无法启动?mod_access.so模块无法加载……-o-郁闷了……先不管他,继续,"Cannot load C:/php/php5apache2.dll into server: The specified module could not be found."看到这句话我彻底囧了,这到底怎么回事,今天Apache存心跟我作对不成。
不管了,先屏蔽掉php模块和access模块,启动……起是起来了,但是没有PHP哪行啊。于是又把PHP加回去,再次出现错误提示,郁闷了,“C:/php/php5apache2.dll”路径没有问题啊,怎么会The specified module could not be found呢。升级PHP到最新版本也不管用。
后来只好上Google,搜索关键字“PHP Apache Cannot load php5apache2.dll into server”(好长……不过这么搜索的话命中率应该是最好的),终于找到了原因,“PHP压缩包里的php5apache2.dll只适用于apache2.0.x”。
终于恍然大悟,原来Apache 2.2 + PHP5以模块方式运行是不行滴~然而我又不喜欢CGI方式,看来只能装回2.0了。接下来让我郁闷的事情又发生了。进入系统服务查看,里面竟然有两个Apache服务,一个是Apache2,另一个是Apache 2.2……我狂郁闷。拆卸2.2,这下Apache 2.2不见了,但是Apache2还在。不管了,安装Apache 2.0.59,将备份的httpd.conf覆盖回去,进入系统服务准备启动服务,爆郁闷的一幕再次发生了,应该已经拆卸掉了的Apache 2.2又回来了……
不管这个幽灵2.2了,启动Apache2服务,还好顺利启动成功,看了一下php模块和access模块,都没有问题,事情还算圆满解决。
折腾到这份上,当初SSL的想法早就冷了一多半,而且也没那个胆量去折腾了。马上就要回学校了,万一弄瘫痪了恢复不了可就不好玩了。
我在网上找到了一种解决这个兼容问题的方法:
下载 这个文件 并解压.共有三个文件.不过我没有试,一来毕竟不是官方的解决方法,不晓得会出现什么问题,二来竟然还要装.NET framework 2,太麻烦。还是等新版本的PHP5放出吧。
vcredist_x86.exe
php5apache2.dll
httpd.exe.manifest
好,开始
1.将 php5apache2.dll 覆盖掉你原来PHP目录下的 php5apache2.dll 文件.
2.将 httpd.exe.manifest 文件复制到你的apache安装目录下的bin文件夹下.
3.双击运行vcredist_x86.exe安装.(如果您的系统里已安装了 .NET framework 2.就可以省掉这一步)
完成!去重启你的apache2.2试试吧.
经验教训:
1.升级软件之前一定要被分好旧版本的配置文件之类的东西。
2.升级软件之前拆卸旧版本,是非常好的习惯。虽然不少程序直接覆盖安装也不会有问题,但是为了最大限度地保证兼容性和稳定性,还是推荐先拆卸掉旧版本。
话题:Waki-Blog

No.251 回复
我怎么安装都无法进行测试,如果可以帮忙的话,希望可以联系我。。。。。。
383135017