这两天安装apache+php时遇到php5ts.dll错误问题。经过几天折腾,终于找到原因。
一、平台
操作系统:windows 2003;
Apache:2.2.17.0,使用httpd-2.2.17-win32-x86-openssl-0.9.8o.msi安装包;
PHP:5.3.5.0,采用apache模块方式,使用php-5.3.5-Win32-VC6-x86.msi安装包。
二、安装过程
将apache安装在D盘,安装后httpd.exe成功启动。安装php,选择apache模块方式,安装在D盘完成。PHP安装后,打开apache的httpd.conf文件,在文件尾部修正配置为:
PHPIniDir "d:/program files/php/"
LoadModule php5_module "d:/program files/php/php5apache2_2.dll"
三、错误
启动httpd时,出现错误。查看日志。apache的error.log中记录为:
[warn] pid file D:/Program Files/Apache Software Foundation/Apache2.2/logs/httpd.pid overwritten -- Unclean shutdown of previous Apache run?
Windows的事件查看器/应用程序中显示为:
Application Error中事件详细信息:错误应用程序httpd.exe,版本2.2.17.0,错误模块php5ts.dll,版本t5.3.5.0,错误地址0x000e890c。
上网查了一翻,涉及php5ts.dll错误的处理,一类是因为PHP只能使用自身版本的dll,如果出现因为系统路径变量的原因,导致其他版本的dll先行引用,则出现错误。针对此类错误,或是删除其他版本dll;或修改系统PATH变量,将PHP的放在前面;或将PHP的dll放到系统的System32目录下。不过,我的路径没有问题,PATH变量中PHP的安装目录还在System32前,也没有其他版本的php5ts.dll。前前后后试了多个安装版本,都无法解决问题。
四、最后解决
最后再次查看php.ini文件,发现一个配置:
error_log="C:WindowsTempphp-errors.log"。
于是打开C:WindowsTempphp-errors.log:
[14-Mar-2011 10:22:15] PHP Warning: PHP Startup: Unable to load dynamic library 'D:Program FilesPHPextphp_oci8.dll' - 找不到指定的模块。
in Unknown on line 0
[14-Mar-2011 10:22:15] PHP Warning: PHP Startup: Unable to load dynamic library 'D:Program FilesPHPextphp_oci8_11g.dll' - 找不到指定的模块。
in Unknown on line 0
[14-Mar-2011 10:22:15] PHP Warning: PHP Startup: Unable to load dynamic library 'D:Program FilesPHPextphp_pdo_oci.dll' - 找不到指定的模块。
in Unknown on line 0
[14-Mar-2011 10:22:15] PHP Warning: PHP Startup: Unable to load dynamic library 'D:Program FilesPHPextphp_sybase_ct.dll' - 找不到指定的模块。
in Unknown on line 0
接下来,再次回到php.ini中,将上面4个模块注释掉:
[PHP_OCI8]
;extension=php_oci8.dll
[PHP_OCI8_11G]
;extension=php_oci8_11g.dll
[PHP_PDO_OCI]
;extension=php_pdo_oci.dll
[PHP_SYBASE_CT]
;extension=php_sybase_ct.dll
重新启动apache,成功。
五、小结
我安装PHP时,选择了完全安装。估计是完全安装也没有安装相关的dll模块,而php.ini中又引用这几个模块,从而导致httpd.exe启动时,引用php出错,而出错信息显示成php5ts.dll。因此,建议遇到php5ts.dll错误时,不妨查看一下php的error_log。
声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。