这个问题是在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.重起系统