PHP的集成包里带了很多的动态链接库,但当我们按照说明配置好后,运行phpinfo()却发现好多个模板并没有加载。仅管我们在php.ini中已经将对应链接库前面的注释(;)去掉了。
本人在配置WAMP时发现一个很有趣的事情:有时mysql模块能加载,有时又不能加载。后经仔细研究发现,能加载时mysql用的都是安装文件,不能加载时mysql用的大多是压缩包。两都会有什么区别呢?
区别就在于安装包在安装里可以选择将mysql的安装目录(./MySQL*.*/bin)添加到PATH里。这样又会有什么效果呢?原来在这个目录下有个和PHP的集成包里同名的文件--libmySQL.dll。上网搜索发现还有其它的解决办法:将PHP的集成包里的libmySQL.dll复制到system32目录下--该目录通常肯定是在PATH里的;还有一个不需要改PATH的办法,就是在Apache的配置文件里加一句:[loadfile X:/*/libmySQL.dll]要用绝对路径。
问题的根源似乎已经找到了,其它的模块是不是也可以这样解决呢。答案是肯定的,可以。最省事的方法是将PHP的解压目录(通常包含libmysql.dll、php.exe等)添加到PATH里,然后重启系统--只重启apache是不行的,你在phpinfo()里查看的“Apache Environment”的PATH参数时就会发现,“PATH ”这一项根本没有变,如能不重启系统就更改应用,本人目前还不知道,谁知道,请告诉我。
还有个不用改PATH也就不用重启系统系统的办法就是在Apache的配置文件用loadfile去加载一些动态链接库。本人经测试将我已知的模块及其要加载的动态链接库列出来:
PHP模块 运行时要加载的动态链接库
------------------------------------------------------------
php_fdf.dll ->fdftk.dll
php_interbase.dll ->gds32.dll
php_pdo_firebird.dll ->gds32.dll
php_curl.dll ->ssleay32.dll
php_ldap.dll ->ssleay32.dll
php_openssl.dll ->ssleay32.dll
php_mcrypt.dll ->libmcrypt.dll
php_mhash.dll ->libmhash.dll
php_msql.dll ->msql.dll
php_mssql.dll ->ntwdblib.dll
php_pdo_mssql.dll ->ntwdblib.dll
php_mysql.dll ->libmysql.dll
php_mysqli.dll ->libmysql.dll
php_pdo_mysql.dll ->libmysql.dll
所要加载的动态链接库全部位于PHP的集成的包解压目录(通常包含libmysql.dll、php.exe等)。该目录还有三个文件:fribidi.dll、libeay32.dll和libswish-e.dll,本人目前尚不知道它们有何用处。至于其中每个模块的名称和作用,本人就不班门弄斧了。
注:该方法适用于php5.1.X、php5.2.X系列,php.4X未经测试。
php加载动态库失败
最新推荐文章于 2022-10-19 13:50:00 发布