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不存在或权限不正确。

  1. 尝试search由PHP加载的.ini文件( phpinfo()可以指示哪些是) – 其中一个应该尝试加载该扩展名。
  2. 纠正文件的path或注释掉相应的行。

如果你在Linux上,你可以在shell中input以下命令find所有加载的configuration文件:

 php -r "print phpinfo();" | grep ".ini" 

更新:正如在评论中提到的,这可以更准确:

 php -i | grep ini 

如果你只是想让错误消失,并且你不需要扩展名,那么通过php.ini注释掉所有的行。 但是,如果你真的想解决这个问题,这里是一些额外的信息。

根据确切的模块,有各种各样的原因,但也有一些一般的指导原则。

  1. 打开phpinfo()并在Core部分下查找extension_dir 。 这是你的模块应该在哪里。

例如,用于Unix / Linux的/usr/lib/php/modules

  1. 如果文件确实存在,请确保权限是足够的。
  2. 如果该文件不存在,请使用下面的资源进行安装。

在* 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。