這個問題是在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.重起系統