05.php_pdo引用不恰当libmysql.dll导致Apache崩溃

05.php_pdo引用不恰当libmysql.dll导致Apache崩溃

郑昀 2010 隶属于《07.杂项》小节

现象

在测试环境Windows XP/2003+PHP v5.2.14+Apache v2.2下,使用php_pdo对象试图连接 MySql 数据库服务时,apache的error.log中什么也没报告,httpd.exe 二话不说径直崩溃。

在 php.ini 中注释掉 extension=php_pdo.dll 后,Apache则不再崩溃。

 

解决方法

该环境在 %SYSTEM32% 目录下,曾放置过一个 libmysql.dll 。

经测试,Apache加载的是此路径下的 libmysql.dll 。

由于 libmysql.dll 文件并没有列出版本号,所以只能通过文件大小来判断是哪一个版本的。

一般,PHP v5.2.14自带的 libmysql.dll 文件大小是2,076KB。

MySql v5.0 自带的则是1,531KB。

MySql v5.5 Cluster自带的是2,703KB。

MySql v5.5 自带的是4,168KB,并且已经有了版本号:5.5.5.0。

怀疑该环境 %SYSTEM32% 目录下的 libmysql.dll 文件与Apache v2.2+PHP v5.2.14不兼容,所以用PHP自带的 libmysql.dll 文件替换,遂成。

 

参考说法

http://bugs.php.net/bug.php?id=46289 BUG报告道:

[2009-06-22 01:53 UTC] ramin dot farmani at gmail dot com

Hi

similarly my httpd.exe crashed when i runnig a site wroten by Yii framework it's seem we have a big problem in php_pdo_mysql library I using php 5.2.10

[2009-09-02 01:07 UTC] Parad0X dot UA at gmail dot com

I was able to fix this by removing MYSQL from Windows' PATH env setting. Looks like when PHP is looking for libmysql.dll it uses the first one it finds in mysql\bin and it's not quite compatible.

Or you can try to add php to the path before mysql.

I hope that helps.

【注:此处建议,在系统变量PATH中,把PHP的目录放在MySql\bin目录前。】

[2009-09-02 07:45 UTC] pajoye@php.net

Ok, it was then the classic case where MySql's libmysql DLL was used instead of the version bundled with PHP. We already have many bogus reports about this issue and your solution is the right one (as explain in the other reports).

【注:此处认为这是一个经典的场景,把MySql自带的libmysql替换PHP自带的,导致不兼容悲剧。】

时间: 2024-10-31 05:54:06

05.php_pdo引用不恰当libmysql.dll导致Apache崩溃的相关文章

win2003下PHP使用preg_match_all导致apache崩溃问题的解决方法_Linux

小编的平台是windows server 2003(32位系统) + Apache/2.2.9 (Win32) + PHP/5.2.17,在使用正则表达式 preg_match_all (如 preg_match_all("/ni(.*?)wo/", $html, $matches);)进行分析匹配比较长的字符串 $html 时(大于10万字节,一般用于分析采集回来的网页源码),Apache服务器会崩溃自动重启.     在Apache错误日志里有这样的提示: 复制代码 代码如下: [

win2003使用preg_match_all导致apache崩溃解决办法

Apache/2.2.9 (Win32) + PHP/5.2.17,在使用正则表达式 preg_match_all (如 preg_match_all("/ni(.*?)wo/", $html, $matches);)进行分析匹配比较长的字符串 $html 时(大于10万字节,一般用于分析采集回来的网页源码),Apache服务器会崩溃自动重启. 在Apache错误日志里有这样的提示: [Thu Apr 11 18:31:31 2013] [notice] Parent: child p

[求助]请问一下 VB.net 2013 如何调用 libmysql.dll 连接数据库[]

问题描述 请问一下VB.net2013如何调用libmysql.dll连接数据库,如何操作数据库,请高手指点一下,如有例子是最好了!我一个人试了好久,也百度了好多时间,总归不得其门而入万分感谢! 解决方案 解决方案二:来个高手来帮个忙呀解决方案三:首先下载mysql.data.dll官网有项目中添加引用然后就可以像mssql一样用了(有些sql语句可能稍微有些区别)ImportMySql.Data.MySqlClientDimmyConnectionString="Database=test;D

Win7系统丢失MSVCP100.dll导致程序无法启动怎么办?

Win7系统丢失MSVCP100.dll导致程序无法启动怎么办?    步骤: 1.打开浏览器,在地址栏输入"www.microsoft.com/zh-cn"回车打开微软中国官方网站; 2.打开网页后在窗口右侧搜索框内输入"vc++ 2010",然后点击右侧的搜索按钮; 3.点击搜索出来的第一个链接; 4.在页面中选择安装语言,然后点击"下载"; 5.在弹出的界面中选择"不用了,谢谢,继续安装"类似跳过的选项; 6.然后会自动

php mysql apache-启动httpd提示“无法启动此程序,因为计算机中丢失LIBMYSQL.dll。.....”的提示。

问题描述 启动httpd提示"无法启动此程序,因为计算机中丢失LIBMYSQL.dll......"的提示. 求助啊!cmd下在apache的bin目录中启动httpd提示"无法启动此程序,因为计算机中丢失LIBMYSQL.dll.尝试重新安装该程序以解决此问题"的提示.

.net2.0 引用了Newtonsoft.Json.dll的问题

问题描述 .net2.0中我引用了ExtAspNet控件库,并引用了Newtonsoft.Json.dll,添加ExtAspNet控件时,有的能正常添加,有的却不能.不能添加的报错信息是:未能加载文件或程序集"Newtonsoft.Json,Version=4.0.8.0,Culture=neutral,PublicKeyToken=30ad4fe6b2a6aeed"或它的某个依赖项.Newtonsoft.Json.dll的版本各种我都试过,2.0,3.5,4.0都试过,都不行我的We

libmysql.dll与php.ini是否真的要拷贝到c:\windows目录下呢_php技巧

是否一定要这样做呢?很多网上的帖子都是人云亦云,别人说要,他也说要. 其实用的,每次重装系统,都这样拷一遍,折腾一遍,太辛苦了. 用过APMServ这个傻瓜式安装包的朋友可能会发觉,这个东西,在第一次安装后,以后重装系统也不会重新安装的,只要运行一下主程序,就可以运行WAMP的了,不用折腾一遍的. 可能有人会认为它把libmysql.dll拷贝到c:\windows目录下了,其实不是的,不信去找一找. 既然APMServ可以做到,那么我们也可以做得,比对了APMServ和我们安装的WAMP,找到

mysql提示:未发现可用的libmysql.dll问题解决办法

MySQL 默认未启用,因此必须在 php.ini 中激活 php_mysql.dll 动态连接库.此外,PHP 还需要访问 MySQL 客户端连接库.PHP 的 Windows 发行版包括了一个 libmysql.dll,为了让 PHP 能和 MySQL 对话,此文件必须放在 Windows 的系统路径 PATH 中.怎样做见 FAQ 中的"怎样把 PHP 目录加入到 Windows PATH中".尽管将 libmysql.dll 拷贝到 Windows 系统目录中也可以(因为系统目

网站导致浏览器崩溃的原因总结(多款浏览器) 推荐_javascript技巧

面试某公司的时候,面试官问到,导致浏览器崩溃的原因有哪些?愚辈不才,仅回答出了内存泄漏.其实在网页在装载的过程中,常常由于种种原因使浏览器的反映变的很慢,或造成浏览器失去响应,甚至会导致机器无法进行其他的操作. 对于访客,如果登录您网站,浏览器就立刻崩溃,我想这对谁都是无法容忍的,对此总结了网站导致浏览器崩溃的原因: 1. 内存泄漏 还是先谈下内存泄漏,网站由于内存泄漏的而照成崩溃有两种情况,服务器的崩溃和浏览器的崩溃.内存泄漏所造成的问题是显而易见的,它使得已分配的内存的引用就会丢失,只要系统