php load dynamic library,PHP中出现“Unable to load dynamic library”问题的解决方法

在升级PHP5后遇到'Unable to load dynamic library'错误,问题出在PHP扩展目录中的模块依赖某些基础DLL文件。解决方法包括将DLL文件复制到system32目录或添加到环境变量%PATH%。在本文中,作者通过删除php4遗留的DLL文件解决问题,同时也提到了不同系统环境下配置的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天把一个客户的服务器上面的PHP4升级到PHP5,根据前几天写的从PHP4升级到PHP5的步骤进行升级之后,总是在错误的日志文件中出现如下提示:

startup: Unable to load dynamic library : PHP5\ext\php_mysql.dll

可是明明将extension_dir设置正确了还是提示无法找到dll文件。后来在优快云上面找到一篇相关的文章,大体意思是php扩展目录中的模块需要依赖于一些基础的dll文件,如果系统没有找到这些基础的dll文件的话也会是扩展模块产生错误。解决的方法有两种,一种是拷贝这些dll文件到system32目录下面,另外一种方法就是将这些dll的目录设置到环境变量%PATH%中去。PHP5的话只要设置其安装目录就可以了。

但是问题是我按照上面的设置还是出现上面的提示,真的是很奇怪。后来我尝试将libmysql.dll文件拷贝到system32目录下面的时候出现是否覆盖文件的提示,这个时候我才恍然大悟,原来php4中的dll目录下面的文件都被拷贝到system32目录下面而没有被删除,所以php5误将这些文件当作基础文件了。于是使用如下的批处理命令将php4留在系统中的文件一一删除即解决了问题:

@echo off

echo remove php4

echo remove php.ini and php4ts.dll

del %SystemRoot%\php.ini

del %SystemRoot%\system32\php4ts.dll

echo remove dlls from system32...

del %SystemRoot%\system32\expat.dll

del %SystemRoot%\system32\FDFTK.DLL

del %SystemRoot%\system32\fribidi.dll

del %SystemRoot%\system32\gds32.dll

del %SystemRoot%\system32\iconv.dll

del %SystemRoot%\system32\libeay32.dll

del %SystemRoot%\system32\libmhash.dll

del %SystemRoot%\system32\libmysql.dll

del %SystemRoot%\system32\mSQL.dll

del %SystemRoot%\system32\ntwdblib.dll

del %SystemRoot%\system32\sablot.dll

del %SystemRoot%\system32\ssleay32.dll

del %SystemRoot%\system32\Yaz.dll

echo done!

这样说的话php5对于查找这些基础dll文件的顺序应该跟查找php.ini文件的顺序(详细见从PHP4升级到PHP5文章中的常见问题3)相反,或者是无论如何首先查看system32目录下面是否含有这些dll文件,如果存在的话就不在查找了。

增加内容(2007.9.20):

今天将PHP5.2.3升级为5.2.4之后依然出现上述的问题(系统:win2k server),但是5.2.3版本使用的很好。后来根据参考资料所说的两种方法(一种是拷贝这些dll文件到system32目录下面,另外一种方法就是将这些dll的目录设置到环境变量%PATH%中去)中的后者将php5的安装目录添加到环境变量%PATH%中之后重新启动下就OK了。但是同样的版本我在本机(系统: winxp sp2)只要在Apache设置PHPIniDir为php5安装目录就可以了,并没有设置环境变量,不知道什么原因。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值