PHP警告:PHP启动:无法加载dynamic库
我运行一个PHP脚本,并得到这个错误:
PHP警告:PHP启动:无法加载dynamic库'/usr/local/lib/php/extensions/no-debug-non-zts-20090626/ixed.5.2.lin' – / usr / local / lib / php / extensions /no-debug-non-zts-20090626/ixed.5.2.lin:无法打开共享对象文件:第0行中的“未知”中没有这样的文件或目录
这意味着什么?
这意味着有一个extension=...
或zend_extension=...
行在你的PHPconfiguration文件(php.ini,或另一个接近它)试图加载该扩展: ixed.5.2.lin
不幸的是,文件或path不存在或权限不正确。
- 尝试search由PHP加载的
.ini
文件(phpinfo()
可以指示哪些是) – 其中一个应该尝试加载该扩展名。 - 纠正文件的path或注释掉相应的行。
如果你在Linux上,你可以在shell中input以下命令find所有加载的configuration文件:
php -r "print phpinfo();" | grep ".ini"
更新:正如在评论中提到的,这可以更准确:
php -i | grep ini
如果你只是想让错误消失,并且你不需要扩展名,那么通过php.ini
注释掉所有的行。 但是,如果你真的想解决这个问题,这里是一些额外的信息。
根据确切的模块,有各种各样的原因,但也有一些一般的指导原则。
- 打开
phpinfo()
并在Core
部分下查找extension_dir
。 这是你的模块应该在哪里。
例如,用于Unix / Linux的
/usr/lib/php/modules
。
- 如果文件确实存在,请确保权限是足够的。
- 如果该文件不存在,请使用下面的资源进行安装。
在* nix(PEAR)上安装
在Windows上安装扩展
带有XAMPP的phpStom
TL; DR除了validation文件是否存在,您可能需要将驱动器号添加到php.ini文件中的某些logging
我突然开始有一个问题,使用phpStorm 7用xampp和xdebugdebuggingphp。 当试图将intellij interperter设置为xampps php时,我得到了很多类似于问题中的警告,例如:
无法加载dynamic库'/xampp/php/ext/php_bz2.dll'
出于某种原因,我不得不将我的驱动器号添加到php.ini文件中的extension_dir和browscap的logging中:
extension_dir = "\xampp\php\ext" browscap = "\xampp\php\extras\browscap.ini"
至
extension_dir = "e:\xampp\php\ext" browscap = "e:\xampp\php\extras\browscap.ini"
当我尝试安装composer php时,在XAMPP for Windows上遇到同样的问题。 我没有php -v
和PHP的抛出错误:
无法加载dynamic库'/xampp/php/ext/php_bz2.dll'
我花了一段时间,直到我意识到我需要设置我的XAMPP。 所以我运行setup_xampp.bat
和php返回工程就像一个魅力。
请注意,如果您的PHP库没有“其他”目录的开放权限,您也可以得到这个错误。 在我的情况下,我注意到这一点时,使用php -l
语法检查我的文本编辑器中的脚本。 这意味着由于我的帐户被称为“volomike”,该帐户没有权限运行php
命令依赖的库。
例如,在Ubuntu 14.04上,我将PHP5自动安装到path/usr/lib/php5/20121212+lfs
。 但是,因为我在C ++中构build了一些共享对象,所以我搞砸了目录权限,搞砸了非root帐户没有目录execute(目录打开)权限来查看/usr/lib/php5/20121212+lfs
。 所以,我input以下命令来纠正这个问题:
sudo chmod o+x /usr/lib/php5/20121212+lfs
。
现在当我做php -l example.php
作为非root用户时,它永远不会给我这个“Unable to load dynamic library”的问题了。
php -r "echo php_ini_loaded_file();"
将在CLI中显示当前ini加载的文件,在那里search您的扩展名,path是不正确的。
我遇到了类似的错误。 我犯的错误是使用“控制器”名称作为“网页”而不是“网页”在我的url。