PHPStartup:Unabletoloaddynamiclibrary...(tried:...这种算是比较常见的问题,当然这里只讨论在保证php.ini中启用了相关扩展,并且相应的.dll文件确实存在于加载目录中的情况。我个人遇到的是'pdo_firebird'和'pdo_oci'.D:\Tool\php\php-7.2.7-Win32-VC15-x64>phpWarning:PHPStartup:Unabletoloaddynamiclibrary'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(找不到指定的模块。))inUnknownonline0Warning:PHPStartup:Unabletoloaddynamiclibrary'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(找不到指定的模块。))inUnknownonline0昨天还好好的没有报错,今天就开始报错了。。重装php也没有用。前者,通过PHPStartup:Unabletoloaddynamiclibraryphp_pdo_firebird.dll:TheOfficialMicrosoftIISForums中的描述,向php主目录中添加一个fbclient.dll可以解决。实测的确消除了报错,只是需要下载和php对应版本的firebird.但问题在于,php主目录下本来没有这个fbclient.dll也是可以正常工作的。所以这算是某种变通的补救措施(甚至可能仅仅是阻止了php报错)。至于后者,根据PHPunabletoloaddynamiclibrary"php_pdo_oci.dll"-StackOverflow中的说法,需要安装OracleInstantClient.(Oracle官网需要注册才能下载,注册基本上都是必填项。。注册成功之后不能登录,过了好久才同步为登录状态。。)。实测有效。但需要的究竟是其中哪一部分组件不明。其他的一些什么方法,什么将ext目录加入环境变量之类的试过了,无效。我非常想了解:1.如何真正解决这两个问题?2.如何解决类似的扩展加载失败问题,有没有什么实用的经验?3.是什么原因导致此类情况发生?为什么会有系统.dll文件甚至运行库组件丢失的情况?(从昨天到今天并未浏览危险网站,除了php报错也没有发现其他任何疑似中毒的现象)欢迎各位提供意见和思路。
2 回答
一只斗牛犬
TA贡献1784条经验 获得超2个赞
问题属于环境配置,基本知识点是程序的运行机制。要彻底解决问题,可以从两方面入手:1.动态链接库作用是什么?2.PHP如何加载动态链接库?明白这两个问题,疑问自然迎刃而解。建议使用php-i|findstrext和php-m两个命令查看配置/拓展加载情况,并试试在php.ini中使用绝对路径加载拓展。
慕工程0101907
TA贡献1887条经验 获得超5个赞
错误信息提示的是无法加载对应的库,那么可能出现的问题就是,无法找到文件,或者文件无法正常使用。在windows下经常会出现这样的问题(因为linux下一般都是编译安装,有仇当时就报了)。那么出现这种问题,无法就是extension_dir配置错误或者dll对环境运行有依赖,比如VC2015或者依赖数据库的一些dll,而这些dll必须是安装数据库后才会到全局环境当中
添加回答
举报
0/150
提交
取消