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

时间:2011-03-12 11:41:33

标签: php dynamic-library

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

这是什么意思?

20 个答案:

答案 0 :(得分:46)

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

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

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

答案 1 :(得分:34)

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

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

更新: 正如评论中所提到的,这可能更准确:

php -i | grep ini

答案 2 :(得分:15)

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

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

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

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

    1. 如果文件确实存在,请确保权限足够。
    2. 如果该文件不存在,请使用以下资源进行安装。
    3. 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)

在Linux中加载.dll

在尝试通过 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'

然后按照此步骤

  1. 只需在文本编辑器(如记事本++)中打开current_xampp_ contains_drive:\ xampp(default_xampp_folder)\ p​​hp \ 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. 现在再次开始composer的安装进度,我想您的问题将得到解决。

答案 9 :(得分:1)

在我的情况下,出现此错误是因为我下载了dll的线程安全版本(以-ts-开头),但是我的php安装的php是非线程安全的(以{{1开头) }}。下载与我的php安装版本完全匹配的dll版本,即可解决该问题。

答案 10 :(得分:0)

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

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

我通过注释解决了
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)文件的位置

method phpinfo() result

3-打开该文件

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

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

enter image description here

答案 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,没有任何消息。