最新消息:

Windows PHP访问MySQL时出现httpd内存错误

未分类 admin 3148浏览 0评论

我在用PHP连MySQL时,总是会弹出对话框提示httpd内存错误。使用VS调试输出的信息为:
httpd.exe 中的 0x0079ac5a 处未处理的异常: 0xC0000005: 读取位置 0x00000014 时发生访问冲突

 

在解决这个问题的过程中,我碰到了一个奇怪的现象,希望路过的高手能帮忙看一下,是什么原因。
问题描述如下:
  我是在Windows XP SP3下安装的Apache HTTP Server 2.2.11,PHP使用的版本是5.2.8,PHP和Apache结合使用的是LoadModule的方式,Apache的httpd.conf文件中的配置语句为
LoadModule php5_module D:/PHP/php5apache2_2.dll
并在后边加上了一句 PHPIniDir “D:/PHP”。

  按道理说,这么配置了以后,Apache启动加载的时候,就会到PHPIniDir指定的路径去寻找php.ini。Apache启动一切正常,我运行了一个php的探针页面,也都能正常显示。但phpinfo()显示的信息,却是这样的
Configuration File (php.ini) Path  C:WINDOWS  
Loaded Configuration File  D:PHPphp.ini  

  PHP配置文件的路径显示的竟然是C:WINDOWS,但实际读取的配置文件却是对的,就是PHPIniDir设置的路径下的。我试着在注册表中添加HKEY_LOCAL_MACHINESOFTWAREPHPIniFilePath,指定路径为D:PHP,但phpinfo()里面显示的路径还是C:WINDOS。添加环境变量PHPRC,结果还是一样的。

  phpinfo()中显示的路径虽然不是我设定的那个,但一般的PHP页面还都是可以正常执行的,这说明php.ini是正确加载的。但在PHP中使用mysql_connect这一类方法访问MySQL数据库时,却总是弹出httpd的内错错误。我把PHP安装目录下的libmysql.dll和php5ts.dll两个dll文件拷贝到C:WINDOS目录下后,内存错误的问题就没有了。看样子是Apache或PHP在Configuration File (php.ini) Path指定的路径中找不到那两个库文件,造成出现内存错误。

  我想请问各位高手,Configuration File (php.ini) Path的路径怎么设置?为什么我做了那些配置以后,这个值还是C:WINDOWS,而且还能正确的从D:PHP中加载php.ini。这个内存错误的问题虽然已经临时解决了,但我还是希望有高手能指导一下,为什么会出现这样的情况。。

转载请注明:爱开源 » Windows PHP访问MySQL时出现httpd内存错误

您必须 登录 才能发表评论!