114

我运行 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 行的未知中没有此类文件或目录

这意味着什么?

4

20 回答 20

59

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

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

  1. 尝试在.iniPHP 加载的文件中搜索(phpinfo()可以指出哪些是) - 其中一个应该尝试加载该扩展名。
  2. 更正文件的路径或注释掉相应的行。
于 2011-03-12T11:45:49.067 回答
45

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

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

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

php -i | grep ini
于 2014-03-06T22:07:48.553 回答
23

phpStom 与 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"
于 2015-09-25T18:47:00.357 回答
17

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

根据确切的模块,导致此问题的原因有多种,但也有一些一般准则。

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

例如,/usr/lib/php/modules对于 Unix/Linux。

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

在 *nix (PEAR)
上安装 在 Windows 上安装扩展

于 2015-05-21T10:55:37.120 回答
6

在 Linux 中加载 .dll

我在尝试通过php.ini文件安装php 扩展时遇到此警告消息;

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

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

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

于 2018-10-16T07:08:02.970 回答
6

php -r "echo php_ini_loaded_file();"

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

于 2017-07-18T11:09:22.403 回答
3

请注意,如果您的 PHP 库没有“其他”目录打开权限,您也可能会收到此错误。在我的特殊情况下,我php -l在文本编辑器中使用语法检查脚本时注意到了这一点。这意味着由于我的帐户被称为“voloike”,因此该帐户无权运行该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 用户身份进行操作时,它再也不会给我这个“无法加载动态库”的问题了。

于 2016-04-26T04:56:43.123 回答
2

就我而言,我收到此错误是因为我下载了 dll 的线程安全版本(以 为前缀-ts-),但我的 php 安装是非线程安全的(以 为前缀-nts-)。下载正确版本的 dll,完全匹配我的 php 安装版本解决了这个问题。

于 2020-05-10T15:18:09.277 回答
2

我所做的是;

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

<?php   
    phpinfo();
?>

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

方法 phpinfo() 结果

3 - 打开该文件

4 - 注释掉类似于下图的行

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

在此处输入图像描述

于 2020-03-24T04:37:43.987 回答
2

当我尝试安装 composer 时,我在 Windows10 的 XAMPP 上遇到了同样的问题。

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

然后按照这个步骤

  1. 只需在 texteditor 中打开您的 current_xampp_containing_drive:\xampp(default_xampp_folder)\php\php.ini (如记事本++)
  2. 现在只需找到 - current_xampp_ contains_drive:\xampp 是否存在?
  3. 如果没有,则找到“extension_dir”并获取驱动器名称(c,d 或您想要的驱动器)之类的。

extension_dir="F:\xampp731\php\ext" (这里find_drive_name_from_the_file是F)

  1. 再次将 find_drive_name_from_the_file:\xampp 替换为 current_xampp_ contains_drive:\xampp 并保存。
  2. 现在再次开始作曲家的安装进度,我认为您的问题将得到解决。
于 2020-01-31T10:21:54.873 回答
2

当我在我的服务器上并排运行不同版本的 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
于 2018-10-17T08:12:50.967 回答
2

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

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

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

于 2016-02-23T01:11:10.527 回答
2

就我而言,当我将 php 版本更新到 7.4 时,此消息开始出现。

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

于 2020-09-21T14:07:22.250 回答
1

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

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

我开始收到PHP Warning: PHP Startup: Unable to load dynamic librarydll. 我在同一个文件中注释掉了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 并且没有任何消息。

于 2018-12-03T12:04:01.160 回答
0

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

于 2019-09-18T13:58:58.423 回答
0

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

于 2017-01-30T08:58:34.170 回答
0

当我尝试将 php 与 sql server 一起使用时,我遇到了同样的问题,当我添加了 sqlsrv 库时......它给了我错误,经过几天的研究,我明白微软在这种情况下不支持 x64 那又怎样我所做的是安装 laragon x86 并使用相应的库。我希望它对某些事情有所帮助

于 2021-12-28T18:37:32.940 回答
0

从 C:\xampp\php\php.exe 我得到了

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

我通过注释掉
C:\xampp\php\php.ini
;extension=解决了

于 2020-10-16T07:08:18.737 回答
0

'C:/PHP/5.2.13/ext\php_mcrypt1.dll'

我会说你的 php.ini 有一些错字(额外的 1)。也许您正在加载与预期不同的 php.ini(请参阅 php.ini 的输出以确保)。

除此之外,请确保 php_mcrypt.dll 和 PHP:

链接到同一个 VC 运行时库(通常是 VC6 的 msvcrt.dll 或 VC9 的 msvcrt90.dll)——为此使用例如依赖项walker 都是调试版本或两个发布版本 都启用了 ZTS 或禁用了 ZTS 对于依赖于的库更多的库(DLL),确保它们可用(例如,在与扩展相同的目录中) 如果不满足上述前三个条件中的任何一个,PHP 应该会给你错误,但我还是写了这些,因为我不确定对于 PHP 5.2。

于 2020-03-31T06:29:55.903 回答
-1

我遇到了类似的问题,下面是所有警告/错误中的一些。

Warning: PHP Startup: Unable to load dynamic library 'curl' (tried: C:\php\ext\curl 
(The specified module could not be found.), C:\php\ext\php_curl.dll (The specified 
module 
could not be found.)) in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library 'fileinfo' (tried: 
C:\php\ext\fileinfo (The specified module could not be found.), 
C:\php\ext\php_fileinfo.dll (The specified module could not be found.)) in Unknown on 
line 0

如果您检查警告,您会看到它正在寻找 php 扩展,C:\php\ext\所以我将 php 下载到该C:\目录并解决了问题。

于 2020-03-04T15:24:51.300 回答