php使用MySql函數導致Apache(iis)崩潰的問題

作者:和奇一號發表于:2013-03-08

這個問題是在Windows下配置PHP環境時發生的。

具體的表現是php運行正常,但是只要一調用MySql的相關函數,Apache就會崩潰掉。

環境配置方式:

php以模塊的方式運行在Apache下。自定義php.ini路徑

phpinfo()顯示mysql庫加載成功

崩潰後在Windows的錯誤日志中會留下以下內容:

错误应用程序 httpd.exe,版本 2.2.11.0,错误模块 php5ts.dll,版本 5.2.10.10,错误地址 0x0000ac6a。

上google查了很久也不知道是怎麽回事,國外也有人遇到同樣的問題,但是沒有解決方法,後來無意中看到phpinfo中MySql庫的版本居然是5.1.30,這才想到原因,分析如下:

我在安裝MySql的時候在配置設定時把MySql的Bin目錄放到了系統環境變量Path中。而Bin目錄中正好有一個libmysql.dll的庫。

而php在加載mysql庫的時候會搜索系統環境變量Path每一個目錄尋找libmysql.dll,由于mysql的bin目錄也在其中,那麽php就先把mysql的libmysql.dll加載了。所以就會由于庫的兼容問題導致mysql的函數無法運行。

解決方案:

1.將mysql的bin目錄從系統環境變量Path中移出或將libmysql.dll從MySql的bin目錄中移出。

2.重起系統