首页 | 新闻 | 交流 | 问吧 | 文档 | 手册 | 下载 | 博客

收藏此问题 发表新评论

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

  我在用PHP连MySQL时,总是会弹出对话框提示httpd内存错误。使用VS调试输出的信息为:
httpd.exe 中的 0x0079ac5a 处未处理的异常: 0xC0000005: 读取位置 0x00000014 时发生访问冲突
  我使用的PHP版本为5.2.8,MySQL的版本为5.1.3.0,Apache的版本为2.2.11,操作系统为WinXP SP3。Apache错误日志中的记录如下:
[Mon Jan 05 18:41:25 2009] [notice] Parent: child process exited with status 3221225477 -- Restarting.
[Mon Jan 05 18:41:25 2009] [notice] Apache/2.2.11 (Win32) PHP/5.2.8 configured -- resuming normal operations
[Mon Jan 05 18:41:25 2009] [notice] Server built: Dec 10 2008 00:10:06
[Mon Jan 05 18:41:25 2009] [notice] Parent: Created child process 1376
[Mon Jan 05 18:41:26 2009] [notice] Child 1376: Child process is running
[Mon Jan 05 18:41:26 2009] [notice] Child 1376: Acquired the start mutex.
[Mon Jan 05 18:41:26 2009] [notice] Child 1376: Starting 64 worker threads.
[Mon Jan 05 18:41:26 2009] [notice] Child 1376: Starting thread to listen on port 80.
  连MySQL的语句是这样的:
mysql_connect('localhost','root','123456');

  在出现内存错误的时候,我用其他的工具连MySQL是很正常的。Apache上运行其他的PHP页面也是很正常的。看上去好像PHP连MySQL的驱动有问题,但我用的都是从官网下载的最新的,应该不会有什么问题啊。。
  我刚接触这些时间不长,实在是看不出这是什么地方的问题了,希望各位高手能指导指导,帮助我解决这个问题。
昵称: JustYan  时间: 2009-01-06 13:09:00
还是我配置的问题,我把php目录下的dll都拷到WINDOWS目录下,问题就没有再出现了。。。
昵称: JustYan  时间: 2009-01-06 21:35:00
在解决这个问题的过程中,我碰到了一个奇怪的现象,希望路过的高手能帮忙看一下,是什么原因。
问题描述如下:
  我是在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:\PHP\php.ini  

  PHP配置文件的路径显示的竟然是C:\WINDOWS,但实际读取的配置文件却是对的,就是PHPIniDir设置的路径下的。我试着在注册表中添加HKEY_LOCAL_MACHINE\SOFTWARE\PHP\IniFilePath,指定路径为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。这个内存错误的问题虽然已经临时解决了,但我还是希望有高手能指导一下,为什么会出现这样的情况。。
昵称: JustYan  时间: 2009-01-09 17:32:00
也可以在系统的环境变量里面调用PHP.ini  PHPext ~~~~~~
Path ``````````
PHPRC  ----------
昵称: zyf123456  时间: 2009-03-08 23:11:00
自从PHP5开始就不需要把PHP文件夹的DEL文件全复制到系统目录了,直接添加个系统环境变量,然后在APACHE里面加载一个模块就好了
昵称: zyf123456  时间: 2009-03-08 23:13:00
K了,3楼正确
昵称: jeccy  时间: 2009-03-30 21:09:00
我装mysql51apache就崩 mysql50就没事
昵称: niohe  时间: 2009-03-31 22:49:00