【问题标题】:PHP Warning: PHP Startup: Unable to load dynamic libraryPHP 警告:PHP 启动:无法加载动态库
【发布时间】:2021-08-27 00:15:45
【问题描述】:

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

这是什么意思?

【问题讨论】:

    标签: php dynamic-library


    【解决方案1】:

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

    很遗憾,该文件或路径不存在或权限不正确。

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

    【讨论】:

    • 所以我也遇到了这个错误,但我的网站仍然有效——这是最奇怪的部分。对于这种类型的错误,我假设 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 中的行注释掉。但如果你真的想解决这个问题,这里有一些额外的信息。

    根据具体的模块,造成这种情况的原因有多种,但也有一些一般准则。

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

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

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

    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/etcphp.ini 中进行修改。 (;extension=php_pdo_mysql.dll after ";" 重启 Apache 后没有任何消息。

            【讨论】:

              【解决方案12】:

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

              【讨论】:

                【解决方案13】:

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

                无法加载动态库'/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. 现在再次启动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 并使用相应的库。我希望它对某些事情有所帮助

                            【讨论】:

                              猜你喜欢
                              • 2015-08-18
                              相关资源
                              最近更新 更多