PHP 警告:PHP 启动:无法加载动态库
Posted
技术标签:
【中文标题】PHP 警告:PHP 启动:无法加载动态库【英文标题】:PHP Warning: PHP Startup: Unable to load dynamic library 【发布时间】:2021-08-27 00:15:45 【问题描述】:我运行一个 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 行的 Unknown 中没有此类文件或目录
这是什么意思?
【问题讨论】:
【参考方案1】:这意味着您的一个 php 配置文件 (php.ini 或其他接近它的文件)中有一个 extension=...
或 zend_extension=...
行正在尝试加载该扩展名:@ 987654323@
很遗憾,该文件或路径不存在或权限不正确。
-
尝试在 PHP 加载的
.ini
文件中进行搜索(phpinfo()
可以指出是哪些文件)- 其中一个应该尝试加载该扩展。
要么更正文件的路径,要么注释掉相应的行。
【讨论】:
所以我也遇到了这个错误,但我的网站仍然有效——这是最奇怪的部分。对于这种类型的错误,我假设 php 从一开始就会崩溃。相反,我得到了我的页面,但我的记录器正在记录这个错误。很奇怪吧? 在 php.ini (在我的例子中是 /etc/php.ini)我注释掉了 extension=php_pdo_mysql.dll 行并重新启动了 Apache,它解决了我的问题并得到了摆脱警告。 (麦克,特立独行) 要么纠正路径我们在说什么路径? 3.或安装缺少的预期扩展 @prats1411 在 ini 文件中:extension= [path here]【参考方案2】:如果您使用的是 Linux,您可以通过在 shell 中键入以下内容来找到所有已加载的配置文件:
php -r "print phpinfo();" | grep ".ini"
更新: 正如 cmets 中提到的,这可能更准确:
php -i | grep ini
【讨论】:
php --ini
列出所有 ini 文件怎么样【参考方案3】:
如果您只是想让错误消失,并且不需要扩展,那么请务必将 php.ini
中的行注释掉。但如果你真的想解决这个问题,这里有一些额外的信息。
根据具体的模块,造成这种情况的原因有多种,但也有一些一般准则。
-
打开
phpinfo()
并在Core
部分下查找extension_dir
。这是您的模块所在的位置。
例如,
/usr/lib/php/modules
用于 Unix/Linux。
-
如果文件确实存在,请确保权限足够。
如果该文件不存在,请使用以下资源进行安装。
Installation on *nix (PEAR)Installation of extensions on Windows
【讨论】:
我正在尝试通过这个 pear 模块进行安装,但是当我运行perl install <module>
时,我得到了 Can't open perl script "install": File or Directory not found
很难知道问题所在,检查你的路径和权限。
如果在容器中尝试docker-php-ext-install <package>
这帮助我在 php.ini 中查找它,然后看到该文件夹是空的。【参考方案4】:
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"
【讨论】:
这在 Windows 10 上为我修复了它。 这在 Windows 7 上为我修复了它。非常感谢 从 cmd 运行时使用extension_dir = "ext"
有效,但从 Apache 运行时可能需要绝对路径(带有驱动器号等)。【参考方案5】:
当我尝试安装 composer 时,我在 XAMPP for Windows 上遇到了同样的问题。
我做了php -v
和 php 抛出错误:
无法加载动态库'/xampp/php/ext/php_bz2.dll'
我花了一段时间才意识到我需要设置我的 XAMPP。所以我运行setup_xampp.bat
并且 php 像魅力一样返回工作。
【讨论】:
【参考方案6】:请注意,如果您的 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
.
现在,当我以非 root 用户身份执行 php -l example.php
时,它再也不会给我这个“无法加载动态库”的问题了。
【讨论】:
这是我使用 Ubuntu 16.10 的确切解决方案。确保在使用 Linux 时将扩展名“extension”更改为 .so(标准配置给了我 .dll) 我使用的是 linux mint 18,这仍然有效【参考方案7】:我遇到了类似的错误。我犯的错误是在我的网址中使用“控制器”名称作为“页面”而不是“页面”。
【讨论】:
【参考方案8】:php -r "echo php_ini_loaded_file();"
将在 CLI 中显示当前的 ini 加载文件,在那里搜索您的扩展名,它的路径不正确。
【讨论】:
【参考方案9】:在 Linux 中加载 .dll
我在尝试通过 php.iniphp-extension 时遇到此警告消息/strong> 文件;
直到我发现你无法在 Linux 中加载 .dll 扩展,
但您必须评论您要导入的扩展 ;extension= ... .dll
并通过sudo apt-get install php-...
正确安装
注意:...
是您要启用的扩展名。
【讨论】:
没错,对我来说,它只是缺少模块安装 - 我正在安装 phpPgAdmin,我需要明确安装的是sudo apt install php-pgsql
和 php-version-specific sudo apt install php7.1-pgsql
(将 7.1 更改为您的 php 版本)【参考方案10】:
当我在我的服务器上并排运行不同版本的 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
【讨论】:
【参考方案11】:在 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/etc
的php.ini
中进行修改。 (;extension=php_pdo_mysql.dll after ";" 重启 Apache 后没有任何消息。
【讨论】:
【参考方案12】:在 Windows 中,它可能是“系统环境变量”中的错误路径。 php.exe 目录的“路径”必须是好的。
【讨论】:
【参考方案13】:当我尝试安装 composer 时,我在 XAMPP for Windows10 上遇到了同样的问题。
无法加载动态库'/xampp/php/ext/php_bz2.dll'
然后按照以下步骤操作
-
只需在 texteditor 中打开你的 current_xampp_containing_drive:\xampp(default_xampp_folder)\php\php.ini (如记事本++)
现在只需查找 - current_xampp_ contains_drive:\xampp 是否存在?
如果没有,则找到“extension_dir”并获取驱动器名称(c、d 或您想要的驱动器)之类的。
extension_dir="F:\xampp731\php\ext"(这里find_drive_name_from_the_file是F)
-
再次将 find_drive_name_from_the_file:\xampp 替换为 current_xampp_ contains_drive:\xampp 并保存。
现在再次启动composer安装进度,我想你的问题会解决的。
【讨论】:
【参考方案14】:我遇到了类似的问题,下面是所有警告/错误中的一些。
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
如果您检查警告,您会看到它正在C:\php\ext\
中寻找php 扩展,所以我将php 下载到C:\
目录并解决了问题。
【讨论】:
【参考方案15】:我所做的是;
1 - 我首先通过函数 phpinfo() 找出我正在使用的 PHP 版本
<?php
phpinfo();
?>
2 - 从那里你会找到你的配置(php.ini)文件的位置
3 - 打开该文件
4 - 注释掉类似于下图的行
这可能是一个不同的值,但它应该与扩展有关。 我不是专家,但这个过程帮助我解决了类似的问题。
【讨论】:
【参考方案16】:'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。
【讨论】:
【参考方案17】:在我的情况下,我收到此错误是因为我下载了 dll 的线程安全版本(以-ts-
为前缀),但我的 php 安装是非线程安全的(以-nts-
为前缀)。下载正确版本的 dll,完全匹配我的 php 安装版本解决了这个问题。
【讨论】:
要检查服务器线程安全配置,请参阅 phpinfo() 和thread-safety
启用/禁用。反向有同样的错误,为ts配置时下载了nts。【参考方案18】:
就我而言,当我将 php 版本更新到 7.4 时,此消息开始出现。
为了解决这个问题,我必须在 php 版本文件夹 (/etc/php/7.4/apache2/ && /etc/php/7.4/cli/) 中查找 php.ini 文件,检查扩展名所在的行可以看到扩展 gd2 和 intl 没有注释。
【讨论】:
【参考方案19】:从 C:\xampp\php\php.exe 我得到了
无法加载动态库“” C:\xampp\php\ext\php_.dll(找不到指定的模块。)我通过注释解决了 C:\xampp\php\php.ini;extension=
【讨论】:
【参考方案20】:当我尝试将 php 与 sql server 一起使用时,我遇到了同样的问题,当我添加了 sqlsrv 库时......它给了我错误,经过几天的研究,我了解到微软在这方面不支持 x64案例所以我所做的是安装 laragon x86 并使用相应的库。我希望它对某些事情有所帮助
【讨论】:
以上是关于PHP 警告:PHP 启动:无法加载动态库的主要内容,如果未能解决你的问题,请参考以下文章
Composer 安装“PHP 警告:PHP 启动:无法加载动态库 'gd2'”
PHP 警告:PHP 启动:无法加载动态库 '/usr/lib/php/20151012/mysql.so'
PHP 警告:PHP 启动:无法加载动态库 imagic.so
PHP 警告:PHP 启动:无法加载动态库 '\xampp\php\ext\php_mailparse.dll' - 找不到指定的模块