php5ts.dll錯誤怎麼辦:
這兩天安裝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。