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

我运行一个 PHP 脚本,得到这个错误:

PHP Warning: PHP Startup: Unable to load dynamic library '/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: cannot open shared object file: No such file or directory in Unknown on line 0

那是什么意思?

516488 次浏览

这意味着在 php 配置文件 (php.ini,或者其他类似的)中有一行 extension=...zend_extension=...正试图加载该扩展名: ixed.5.2.lin

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

  1. 尝试搜索由 PHP 加载的 .ini文件(phpinfo()可以指出哪些是)-其中一个应该尝试加载该扩展名。
  2. Either correct the path to the file or comment out the corresponding line.

如果你在 Linux 上,你可以通过在 shell 中输入以下命令找到所有加载的配置文件:

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

更新: As mentioned in comments, this can be even more accurate:

php -i | grep ini

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

基于确切的模块,有各种各样的原因,但是也有一些通用的指导方针。

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

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

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

在 * nix (PEAR)上安装
Installation of extensions on Windows

使用 XAMPP 的 phpStom

TL;DR Except from verifying that the files exist, you might need to add the drive letter to some records in your php.ini file

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

无法加载动态库’/xampp/php/ext/php _ bz2.dll’

由于某种原因,我不得不将驱动器号添加到 php.ini 文件中的 ext.dir 和 Browscape 记录中:

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

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

我在 XAMPP for Windows 上尝试安装编曲器时遇到了同样的问题。 我做了 php -v和 php 投掷错误:

无法加载动态库’/xampp/php/ext/php _ bz2.dll’

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

注意,如果 PHP 库没有“ other”目录打开权限,也可能会出现此错误。在我的特殊案例中,我在使用 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.

现在,当我以非 root 用户的身份使用 php -l example.php时,它再也不会给我带来“无法加载动态库”的问题了。

我遇到了类似的错误。我所犯的错误是在我的 url 中使用“控制器”名称作为“ Pages”而不是“ Pages”。

php -r "echo php_ini_loaded_file();"

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

在 Linux 中加载. dll

我在尝试通过 < em > php.ini 文件安装 环境卫生署时遇到了这个警告消息;

直到我发现你不能在 Linux 中加载 < em > . dll 扩展,

but you have to comment the extensions that you want to import ;extension= ... .dll and 正确安装 via sudo apt-get install php-...

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

I had this error on a number of modules when I had been running different versions of PHP side by side on my server. To sort this out, I needed to install the packages it couldn't find for that specific PHP version. So, for example, if I saw:-

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

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

我混淆并激活了 mysqli.dll(和 mysql.dll: 在 /etc/php/7.2/cli/php.ini中删除“ #”

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

看起来 XAMPP 从 /etc/php/7.2/cli读取 php.ini文件并对 /opt/lampp/etcphp.ini进行修改。在“ ;”之后重新启动 Apache,不再有任何消息。

在 Windows 中,“系统环境变量”可能是错误的路径。 到 php.exe 目录的“路径”必须是正确的路径。

在 XAMPP for Windows10上尝试安装作曲家时也遇到了同样的问题。

无法加载动态库’/xampp/php/ext/php _ bz2.dll’

Then follow this steps

  1. 只需要在 textteditor 中打开您的 current _ xampp _ include _ drive: xampp (default _ xampp _ file) php php.ini (如记事本 + +)
  2. 现在只需要查找当前 _ xampp _ include _ drive: xampp 是否存在?
  3. if not then find the "extension_dir" and get the drive name(c,d or your desired drive) like.

Xml _ dir = “ F: xampp731 php ext”(在这里查找 _ drive _ name _ from _ the _ file 是 F)

  1. 再次用 find _ drive _ name _ from _ the _ file: xampp 替换为 current _ xampp _ include _ drive: xampp 并保存。
  2. now again start the composer installation progress, i think your problem will be solved.

我所做的是

1-我首先通过函数 phpinfo ()查找我使用的 PHP 的版本

<?php
phpinfo();
?>

2-从那里您将找到您的配置(php.ini)文件的位置

method phpinfo() result

3-打开那个文件

注释掉与下图相似的一行

这可能是一个不同的值,但它应该与扩展相关。 我不是专家,但这个过程帮助我解决了类似的问题。

enter image description here

‘ C:/PHP/5.2.13/ext PHP _ mcrypt1.dll’

我得说你的 php.ini (额外的1)打错了。也许您正在加载与预期不同的 php.ini (请参阅 php.ini 的输出以确保这一点)。

Other than that make sure that php_mcrypt.dll and PHP:

链接到相同的 VC 运行时库(通常是 VC6的 msvcrt.dll 或 VC9的 msvcrt90.dll)-使用依赖关系遍历 Are both debug builds or both release builds 两者都启用了 ZTS 或禁用了 ZTS For libraries that depend on further libraries (DLLs), make sure they are available (e.g. in the same directory as the extension) 如果不满足前三个条件中的任何一个,PHP 应该会给出意义错误,但我还是写了这些,因为我不确定是否适用 PHP 5.2。

In my case I got this error because I downloaded a thread-safe version of the dll (infixed with -ts-), but my installation of php was a non-thread-safe (infixed with -nts-). Downloading the right version of the dll, exactly matching my php installation version fixed the issue.

在我的例子中,当我将 php 版本更新到7.4时,这条消息开始出现。

为了解决这个问题,我必须查找在 php 版本文件夹(/etc/php/7.4/apache2/& &/etc/php/7.4/cli/)中找到的 php.ini 文件,检查我看到的扩展名 gd2和 intl 被取消注释的行。

来自 C: xampp php php.exe

  • 无法加载动态库”
  • C: xampp php ext php _. dll (找不到指定的模块)

我通过评论解决了这个问题
C: xampp php php.ini
; 延伸 =

当我尝试在 sql 服务器上使用 php 时,我也遇到了同样的问题,当我添加 sqlsrv 库时... ... 它给了我一个错误,在那里研究了几天之后,我明白微软在这种情况下不支持 x64,所以我所做的就是安装 laragon x86并使用相应的库。希望能有所帮助

转到 system env 变量并将 php ext 目录路径设置为

C:\xampp\php\ext

基本上就是找到 ext 目录,然后定位它的文件,但是它无法找到文件,因为 php 路径被设置为不同的。