我运行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行的“未知”中没有此类文件或目录
这是什么意思?
答案 0 :(得分:46)
这意味着您正在尝试加载的一个php配置文件(php.ini或其他接近它)中有extension=...
或zend_extension=...
行该扩展程序:ixed.5.2.lin
不幸的是,文件或路径不存在或权限不正确。
.ini
文件(phpinfo()
可以指出哪些文件) - 其中一个应该尝试加载该扩展名。答案 1 :(得分:34)
如果您使用的是Linux,则可以在shell中输入以下内容找到所有已加载的配置文件:
php -r "print phpinfo();" | grep ".ini"
更新: 正如评论中所提到的,这可能更准确:
php -i | grep ini
答案 2 :(得分:15)
如果您只是想让错误消失,并且您不需要扩展程序,那么请务必在php.ini
中注释掉该行。但是如果你真的想解决这个问题,还有一些额外的信息。
基于确切的模块,有多种原因,但也有一些一般性的指导原则。
phpinfo()
并在extension_dir
部分下查找Core
。这是您的模块所在的位置。例如,Unix / Linux的
/usr/lib/php/modules
。
Installation on *nix (PEAR)
Installation of extensions on Windows
答案 3 :(得分:9)
使用XAMPP的phpStom
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 :(得分:4)
php -r "echo php_ini_loaded_file();"
将在CLI中显示当前加载的文件,在那里搜索您的扩展名,其路径不正确。
答案 5 :(得分: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
。
现在当我以非root用户身份php -l example.php
时,它永远不会给我这个"无法加载动态库"问题了。
答案 6 :(得分:2)
当我尝试安装composer时,我在XAMPP for Windows上遇到了同样的问题。
我做了php -v
和php抛出错误:
无法加载动态库' /xampp/php/ext/php_bz2.dll'
我花了一段时间才意识到我需要设置我的XAMPP。所以我运行setup_xampp.bat
并返回php就像魅力一样。
答案 7 :(得分:2)
在尝试通过 php.ini 安装 php-extension 时,我遇到了此警告消息/ strong>文件;
直到我发现您无法在Linux中加载 .dll 扩展名
但是您必须注释要导入的扩展;extension= ... .dll
并通过sudo apt-get install php-...
正确安装
注释:...
是您要启用的扩展名。
答案 8 :(得分:2)
当我尝试安装作曲家时,在Windows 10的XAMPP上遇到相同的问题。
无法加载动态库'/xampp/php/ext/php_bz2.dll'
然后按照此步骤
extension_dir =“ F:\ xampp731 \ php \ ext”(此处find_drive_name_from_the_file是F)
答案 9 :(得分:1)
在我的情况下,出现此错误是因为我下载了dll的线程安全版本(以-ts-
开头),但是我的php安装的php是非线程安全的(以{{1开头) }}。下载与我的php安装版本完全匹配的dll版本,即可解决该问题。
答案 10 :(得分:0)
我从C:\ xampp \ php \ php.exe得到了
我通过注释解决了
C:\ xampp \ php \ php.ini
; extension =
答案 11 :(得分:0)
就我而言,当我将php版本更新为7.4时,此消息开始出现。
要解决此问题,我必须查找在php版本文件夹(/etc/php/7.4/apache2/ && /etc/php/7.4/cli/)中找到的php.ini文件,检查扩展名所在的行可以看到扩展名gd2和intl没有注释。
答案 12 :(得分: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)–使用例如依赖行者 都是调试版本还是发布版本 两者都启用ZTS或禁用ZTS 对于依赖其他库(DLL)的库,请确保它们可用(例如,与扩展名相同的目录中) 如果不满足上述前三个条件中的任何一个条件,PHP应该给您带来含义错误,但是我还是写了这些错误信息,因为我不确定PHP 5.2。
答案 13 :(得分:0)
我所做的是;
1-我首先通过函数phpinfo()找出我正在使用的PHP版本
<?php
phpinfo();
?>
2-从那里您将找到配置(php.ini)文件的位置
3-打开该文件
4-注释掉类似于下图的行
这可能是一个不同的值,但应与扩展名相关。 我不是专家,但是这个过程帮助我解决了类似的问题。
答案 14 :(得分:0)
为您的PHP版本here查找确切的扩展名
答案 15 :(得分:0)
在Windows中,“系统环境变量”中的路径可能错误。 php.exe目录的“路径”必须是正确的。
答案 16 :(得分: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
答案 17 :(得分:0)
我遇到了类似的错误。我犯的错误是使用&#34;控制器&#34;命名为&#34; Pages&#34;而不是&#34;页面&#34;在我的网址中。
答案 18 :(得分:-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
如果您仔细阅读警告,就会发现它正在C:\php\ext\
中寻找php扩展名,因此,我将php下载到了C:\
目录中,从而解决了问题。
答案 19 :(得分:-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
的{{1}}中进行了修改。 (;“;”之后的extension = php_pdo_mysql.dll重新启动了Apache,没有任何消息。