這個(gè)問(wèn)題是在Windows下配置PHP環(huán)境時(shí)發(fā)生的。
具體的表現(xiàn)是php運(yùn)行正常,但是只要一調(diào)用MySql的相關(guān)函數(shù),Apache就會(huì)崩潰掉。
環(huán)境配置方式:
php以模塊的方式運(yùn)行在Apache下。自定義php.ini路徑
phpinfo()顯示mysql庫(kù)加載成功
崩潰后在Windows的錯(cuò)誤日志中會(huì)留下以下內(nèi)容:
錯(cuò)誤應(yīng)用程序 httpd.exe,版本 2.2.11.0,錯(cuò)誤模塊 php5ts.dll,版本 5.2.10.10,錯(cuò)誤地址 0x0000ac6a。
上google查了很久也不知道是怎么回事,國(guó)外也有人遇到同樣的問(wèn)題,但是沒有解決方法,后來(lái)無(wú)意中看到phpinfo中MySql庫(kù)的版本居然是5.1.30,這才想到原因,分析如下:
我在安裝MySql的時(shí)候在配置設(shè)定時(shí)把MySql的Bin目錄放到了系統(tǒng)環(huán)境變量Path中。而Bin目錄中正好有一個(gè)libmysql.dll的庫(kù)。
而php在加載mysql庫(kù)的時(shí)候會(huì)搜索系統(tǒng)環(huán)境變量Path每一個(gè)目錄尋找libmysql.dll,由于mysql的bin目錄也在其中,那么php就先把mysql的libmysql.dll加載了。所以就會(huì)由于庫(kù)的兼容問(wèn)題導(dǎo)致mysql的函數(shù)無(wú)法運(yùn)行。
解決方案:
1.將mysql的bin目錄從系統(tǒng)環(huán)境變量Path中移出或?qū)ibmysql.dll從MySql的bin目錄中移出。
2.重起系統(tǒng)