PHP Startup: Unable to load dynamic library … (tried:… 这种算是比较常见的问题,
当然这里只讨论在保证 php.ini 中启用了相关扩展,并且相应的.dll文件确实存在于加载目录中的情况。
我个人遇到的是’pdo_firebird’和 ‘pdo_oci’.
D:\Tool\php\php-7.2.7-Win32-VC15-x64>php
Warning: PHP Startup: Unable to load dynamic library 'pdo_firebird' (tried: D:\Tool\php\php-7.2.7-Win32-VC15-x64\ext\pdo_firebird (找不到指定的模块。), D:\Tool\php\php-7.2.7-Win32-VC15-x64\ext\php_pdo_firebird.dll (找不到指定的模块。)) in Unknown on line 0
Warning: PHP Startup: Unable to load dynamic library 'pdo_oci' (tried: D:\Tool\php\php-7.2.7-Win32-VC15-x64\ext\pdo_oci (找不到指定的模块。), D:\Tool\php\php-7.2.7-Win32-VC15-x64\ext\php_pdo_oci.dll (找不到指定的模块。)) in Unknown on line 0
昨天还好好的没有报错,今天就开始报错了。。重装php也没有用。
前者,通过
PHP Startup: Unable to load dynamic library php_pdo_firebird.dll : The Official Microsoft IIS Forums
中的描述,向php主目录中添加一个fbclient.dll可以解决。
实测的确消除了报错,只是需要下载和php对应版本的firebird.
但问题在于,php主目录下本来没有这个fbclient.dll也是可以正常工作的。所以这算是某种变通的补救措施(甚至可能仅仅是阻止了php报错)。
至于后者,根据
PHP unable to load dynamic library “php_pdo_oci.dll” – Stack Overflow
中的说法,需要安装Oracle Instant Client.
(Oracle官网需要注册才能下载,注册基本上都是必填项。。注册成功之后不能登录,过了好久才同步为登录状态。。)。
实测有效。但需要的究竟是其中哪一部分组件不明。
其他的一些什么方法,什么将ext目录加入环境变量之类的试过了,无效。
我非常想了解:
1.如何真正解决这两个问题?
2.如何解决类似的扩展加载失败问题,有没有什么实用的经验?
3.是什么原因导致此类情况发生?
为什么会有系统.dll文件甚至运行库组件丢失的情况?
(从昨天到今天并未浏览危险网站,除了php报错也没有发现其他任何疑似中毒的现象)
欢迎各位提供意见和思路。