PHP警告:PHP启动:无法加载动态库

问题描述 投票:78回答:11

我运行PHP脚本并得到此错误:

PHP警告:PHP启动:无法加载动态库'/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行的“未知”中没有此类文件或目录

那是什么意思?

php dynamic-library
11个回答
48
投票

这意味着在你的一个php配置文件(php.ini或其他接近它)中有一个extension=...zend_extension=...行试图加载该扩展:ixed.5.2.lin

不幸的是,该文件或路径不存在或权限不正确。

  1. 尝试搜索由PHP加载的.ini文件(phpinfo()可以指示哪些文件) - 其中一个应该尝试加载该扩展名。
  2. 更正文件的路径或注释掉相应的行。

0
投票

我遇到了类似的错误。我犯的错误是在我的网址中使用“控制器”名称作为“页面”而不是“页面”。


0
投票

当我在服务器上并行运行不同版本的PHP时,我在许多模块上出现此错误。为了解决这个问题,我需要安装它找不到特定PHP版本的软件包。所以,例如,如果我看到: -

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/20160303/xml.so'

我会专门为PHP版本安装库: -

sudo apt-get install php7.1-xml

然后重启Apache。为我修好了。你可以检查你的版本: -

php -v

35
投票

如果您使用的是Linux,则可以通过在shell中键入以下内容来查找所有已加载的配置文件:

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

更新:如评论中所述,这可能更准确:

php -i | grep ini

16
投票

如果您只是想让错误消失,而您不需要扩展名,那么请务必在php.ini中注释该行。但是如果你真的想解决这个问题,还有一些额外的信息。

基于确切的模块有多种原因,但也有一些通用的指导原则。

  1. 打开phpinfo()并在extension_dir部分寻找Core。这是您的模块所在的位置。

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

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

Installation on *nix (PEAR) Installation of extensions on Windows


9
投票

phpStorm与XAMPP

TL; DR除了验证文件是否存在外,您可能需要将驱动器号添加到php.ini文件中的某些记录中

我突然开始使用phpStorm 7来调试带有xampp和xdebug的php。当试图将intellij interperter设置为xampps php时,我收到了很多警告,比如问题中的警告,例如:

无法加载动态库'/xampp/php/ext/php_bz2.dll'

出于某种原因,我必须将我的驱动器号添加到php.ini文件中的extension_dir和browscap的记录中:

extension_dir = "\xampp\php\ext"
browscap = "\xampp\php\extras\browscap.ini"

extension_dir = "e:\xampp\php\ext"
browscap = "e:\xampp\php\extras\browscap.ini"

4
投票

php -r "echo php_ini_loaded_file();"

将在CLI当前ini加载文件中显示,在那里搜索您的扩展名,其路径不正确。


3
投票

请注意,如果您的PHP库没有“其他”目录打开权限,您也可能会收到此错误。在我的特定情况下,我在使用php -l语法检查文本编辑器中的脚本时注意到了这一点。这意味着,由于我的帐户被称为“volomike”,该帐户无权运行php命令所依赖的库。

例如,在Ubuntu 14.04上,我将PHP5自动安装到路径/usr/lib/php5/20121212+lfs中。但是,因为我在C ++中构建了一些共享对象,所以我搞砸了目录权限并搞砸了事情,以至于非root帐户没有目录执行(目录打开)权限来查看/usr/lib/php5/20121212+lfs。所以,我输入以下命令来纠正这个问题:

sudo chmod o+x /usr/lib/php5/20121212+lfs

现在,当我将php -l example.php作为非root用户时,它再也没有给我这个“无法加载动态库”的问题。


3
投票

在Linux中加载.dll

当我尝试通过php.ini文件安装php-extension时,我遇到了这条警告消息;

直到我发现你无法在Linux中加载.dll扩展名,

但你必须评论你要导入;extension= ... .dll的扩展并通过sudo apt-get install php-...正确安装它

注意:...是您要启用的扩展名。


2
投票

当我尝试安装composer时,我在XAMPP for Windows上遇到了同样的问题。我做了php -v和php抛出错误:

无法加载动态库'/xampp/php/ext/php_bz2.dll'

我花了一段时间才意识到我需要设置我的XAMPP。所以我运行setup_xampp.bat和php返回工作就像一个魅力。


1
投票

Windows 10 XAMPP之后,我在Ubuntu上安装了LAMPP (XAMPP)。与MAC(iOS)相比,Windows XAMPP的配置要少得多,但现在Linux Ubuntu还有一些,因为Linux有更多的东西(一件好事)。

我困惑并激活mysqli.dll(和mysql.dll:擦除“#”在/etc/php/7.2/cli/php.ini

我开始得到与PHP Warning: PHP Startup: Unable to load dynamic library相关的dll消息。我在同一个文件中注释掉了mysql(and i).dll,但是直到我在/opt/lampp/etc/php.ini评论了“”时,消息才消失。

看起来像XAMPP从php.ini读取/etc/php/7.2/cli文件并在php.ini/opt/lampp/etc中进行修改。 (; extension = php_pdo_mysql.dll在“;”之后重新启动Apache而不再有任何消息。

© www.soinside.com 2019 - 2024. All rights reserved.