威尼斯wns.9778官网 > 计算机教程 > 05.php_pdo引用不恰当libmysql.dll导致Apache崩溃

原标题:05.php_pdo引用不恰当libmysql.dll导致Apache崩溃

浏览次数:94 时间:2019-06-28

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则不再崩溃。

 

昨天突然又想弄点PHP,于是在我的本本上开始配置,以前也配置过,主要问题连接MySqL不成功,提示Fatal error: Call to undefined function mysql_connect() 。上网找资料,不是说设置环境变量就是把php.ini和libmysql.dll拷到system32目录下什么的,都试过了,可都没成功,最后就放弃了。这次遇到同样的问题,但我下了决心:不弄成功我就把我的本本砸了!终于,我还是心疼我的本本,刚才配置成功了。一陈喜悦^o^……

解决方法

该环境在 %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 文件替换,遂成。

 

配置环境:Windows Xp Professional Sp2  Apache 2.2.4 PHP 5.2.5 Mysql 5.1.33

参考说法

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

[威尼斯wns.9778官网,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 mysqlbin and it's not quite compatible.

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

I hope that helps.

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

[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自带的,导致不兼容悲剧。】


现把经验分享如下:

关键目录表示:PHP安装目录——PHP_Dir,Apache安装目录——Apache_Dir。注意目录字串末尾都没有“/”或“”

1.安装 MySql,PHP,Apache,安装一般没有什么问题,关键在于配置。

2.配置 php.ini:
    (1)把PHP_Dir目录下的php.ini-dist复制一份,重命名为 php.ini。
    (2)打开 php.ini,查找定位到extension_dir,设置为extension_dir = "PHP_Dir"。注意PHP_Dir结束不包括斜杠“/”号,且把反斜杠“”改为斜杠“/”。
    (3)在php.ini中,定位到extension=php_mysql.dll,把这一行的前面的“;”号删除,并且改为extension=ext/php_mysql.dll。如果要加载mysqli或其它模块,同样这样修改。

    在配置extension_dir的时候,网上有很多,但基本是保留默认的"./",并且又拷贝文件又设置环境变量的,太麻烦。在我本本上从未成功过(我只在公司一台式机上配置成功过)。我现在这种配置,MYSQL模块的路径合起来就是“PHP_Dir/ext/php_mysql.dll”,否则Apache启动的时候就不能加载Mysql模块。

本文由威尼斯wns.9778官网发布于计算机教程,转载请注明出处:05.php_pdo引用不恰当libmysql.dll导致Apache崩溃

关键词:

上一篇:string-循环的程序执行时,为什么第一次的执行时

下一篇:没有了