【问题标题】:Error In PHP5 ..Unable to load dynamic libraryPHP5中的错误..无法加载动态库
【发布时间】:2019-04-03 22:09:44
【问题描述】:
root@ip-10-131-9-200:/etc/php5/apache2# php -a
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/curl.so' - /usr/lib/php5/20090626+lfs/curl.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/mcrypt.so' - /usr/lib/php5/20090626+lfs/mcrypt.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/mysql.so' - /usr/lib/php5/20090626+lfs/mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/mysqli.so' - /usr/lib/php5/20090626+lfs/mysqli.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/pdo.so' - /usr/lib/php5/20090626+lfs/pdo.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/pdo_mysql.so' - /usr/lib/php5/20090626+lfs/pdo_mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0
Interactive shell

【问题讨论】:

    标签: php


    【解决方案1】:

    (对于 Ubuntu 用户)

    我遇到了同样的问题,但上面的答案都没有解决这个问题。这是我解决问题的方法。

    打开你的php.ini 文件(我的文件在/etc/php/7.3/cli/php.ini)。

    你可能有这样的事情:

    extension=pdo_mysql
    

    或许:

    extension=/here/is/the/path/to/your/file/pdo_mysql.so
    

    extension=pdo_mysql之前添加下面一行

    extension=pdo
    

    所以,你将拥有:

    extension=pdo
    extension=pdo_mysql
    

    似乎问题是(至少在我的情况下)我们需要先加载pdo 扩展才能加载pdo_mysql 扩展。

    希望有帮助!

    【讨论】:

      【解决方案2】:

      尽管有其他几个答案建议这样做,但安装更多不必要的软件通常不是最好的解决方案。相反,您应该解决根本问题。出现这些消息的原因是您尝试加载这些扩展,但未安装它们。所以简单的解决方案就是告诉 PHP 停止尝试加载它们:

      首先,找出哪些文件正在尝试加载上述扩展:

      $ grep -Hrv ";" /etc/php5 | grep -E "extension(\s+)?="
      

      Ubuntu 的示例输出:

      /etc/php5/mods-available/gd.ini:extension=gd.so
      /etc/php5/mods-available/pdo_sqlite.ini:extension=pdo_sqlite.so
      /etc/php5/mods-available/pdo.ini:extension=pdo.so
      /etc/php5/mods-available/pdo_mysql.ini:extension=pdo_mysql.so
      /etc/php5/mods-available/mysqli.ini:extension=mysqli.so
      /etc/php5/mods-available/mysql.ini:extension=mysql.so
      /etc/php5/mods-available/curl.ini:extension=curl.so
      /etc/php5/mods-available/sqlite3.ini:extension=sqlite3.so
      /etc/php5/conf.d/mcrypt.ini:extension=mcrypt.so
      /etc/php5/conf.d/imagick.ini:extension=imagick.so
      /etc/php5/apache2/php.ini:extension=http.so
      

      现在只需找到正在加载导致错误的扩展名的文件,并使用; 注释掉这些行。由于某种原因,默认安装的 Ubuntu 发生在我身上,所以希望这对其他人有帮助。

      【讨论】:

      • 从 Debian 6.x 升级到 7.1 后,我遇到了同样的错误。我不知道 suhosinidn 模块在这个较新的包中被删除了.. 非常感谢 grep 行。
      • 非常感谢。这在 Ubuntu 12.04.2 LTS 中运行良好。我还有一个问题:如果我通过放置一个 ; 禁用导致错误的扩展行首的符号,升级后会重新启用吗?
      • @GeppettvsD'Constanzo 升级时,有时会提示是否覆盖配置文件。如果你覆盖它,它可能会覆盖这些,但我不太确定。只需选择否。
      • 我同意,如果你不需要它,为什么要安装它?
      • 我喜欢这种答案,因为它们让你了解发生了什么又名 = 诀窍
      【解决方案3】:

      我遇到了类似的问题,导致我来到这里:

      $ phpunit --version
      PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20131226/profiler.so' - /usr/lib/php5/20131226/profiler.so: cannot open shared object file: No such file or directory in Unknown on line 0
      PHPUnit 5.7.17 by Sebastian Bergmann and contributors.
      

      与上述不同,安装该软件并没有解决我的问题,因为我已经有了它。

      $ sudo apt-get install php5-uprofiler
      Reading package lists... Done
      Building dependency tree       
      Reading state information... Done
      php5-uprofiler is already the newest version.
      0 upgraded, 0 newly installed, 0 to remove and 52 not upgraded.
      

      我通过Debian Bug report logs找到了我的解决方案

      $ sudo vim /etc/php5/mods-available/uprofiler.ini
      

      我编辑了 ini 文件,将 extension=profiler.so 更改为 extension=uprofiler.so .... 结果,很高兴:

      $ phpunit --version
      PHPUnit 5.7.17 by Sebastian Bergmann and contributors.
      

      即没有更多的警告。

      【讨论】:

        【解决方案4】:

        如果你使用的是 5.6 php,

        sudo apt-get install php5.6-curl

        【讨论】:

        • 我为 7.* php 安装了命令:sudo apt-get install php-curl
        【解决方案5】:

        我通过取消注释在 php.ini 中启用了 extension_dir,

          extension_dir = "ext"
          extension=phpchartdir550.dll
        

        并将 phpchartdir550 dll 复制到 extension_dir (/usr/lib/php5/20121212),导致同样的错误。

          PHP Warning:  PHP Startup: Unable to load dynamic library 'ext/phpchartdir550.dll' - ext/phpchartdir550.dll: cannot open shared object file: No such file or directory in Unknown on line 0
          PHP Warning:  PHP Startup: Unable to load dynamic library 'ext/pdo.so' - ext/pdo.so: cannot open shared object file: No such file or directory in Unknown on line 0
          PHP Warning:  PHP Startup: Unable to load dynamic library 'ext/gd.so' - ext/gd.so: cannot open shared object file: No such file or directory in Unknown on line 0
        

        正如@Mike 所指出的,当应用程序中实际上不需要时,没有必要安装所有的东西。

        更简单的方法是在将库复制到正确位置后提供要加载的扩展的完整路径。

        将phpchartdir550.dll复制到/usr/lib/php5/20121212,这是我的Ubuntu 14.04中的extension_dir(可以使用phpinfo()查看) 然后在 php.ini 中提供库的完整路径,

        ;   extension=/path/to/extension/msql.so
        extension=/usr/lib/php5/20121212/phpchartdir550.dll
        

        重启 apache:sudo service apache2 restart

        即使其他 .so 存在于同一目录中,也只能选择性地加载所需的。

        【讨论】:

          【解决方案6】:

          好像您将 PHP 升级到了较新的版本,而旧的 .ini 文件仍指向旧位置。

          解决方案:找出模块现在的位置

          ls -l /usr/lib/php5
          

          应该有一个类似于旧20090626 的目录。就我而言,现在是20131226

          提示错误的 .ini 文件位于 /etc/php5/cli/conf.d/

          只需编辑那些模块给你一个错误的 .ini 文件。例如,如果错误是针对 mcrypt 模块的:

          sudo vi /etc/php5/cli/conf.d/20-mcrypt.ini
          

          换行:

          extension=/usr/lib/php5/20090626/mcrypt.so
          

          反映 .so 文件的新路径。在我的情况下,正确的路径应该是:

          extension=/usr/lib/php5/20131226/mcrypt.so
          

          就是这样!错误消失了。 Ofc 你必须对给你一个错误的每个模块执行此操作。

          【讨论】:

            【解决方案7】:

            对于 Ubuntu 14.04,我只是为 mcrypt 收到了这个错误:

            PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20121212/mcrypt.ini' - /usr/lib/php5/20121212/mcrypt.ini: cannot open shared object file: No such file or directory in Unknown on line 0
            

            如果您仔细查看错误,则 php 正在该位置查找 mcrypt.ini 而不是 mcrypt.so。我只需将 mcrypt.so 复制到 mcrypt.ini 就可以了,警告消失了,现在扩展程序已正确安装。它可能看起来有点脏,但它确实有效!

            【讨论】:

              【解决方案8】:

              我通过blog.tordeu.com 找到了这个解决方案,它是

              sudo aptitude purge php5-suhosin
              

              我不确定,但似乎不再需要 suhosin,它适用于我的 PHP 版本:

              PHP 5.4.34-1+deb.sury.org~lucid+1 (cli) (built: Oct 17 2014 15:26:51)
              Copyright (c) 1997-2014 The PHP Group
              Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
              

              【讨论】:

                【解决方案9】:

                如果你把 ;符号,此操作使扩展无效。

                我遇到了同样的问题并做了以下操作:

                1. 使用 purge 参数卸载 php:

                  sudo apt-get --purge remove php5-common
                  
                2. 然后重新安装:

                  sudo apt-get install php5 php5-mysql
                  

                【讨论】:

                  【解决方案10】:

                  不知何故,gmp.so 文件似乎已从我的系统中删除。这就是为我解决的问题:

                  sudo apt-get install --reinstall php5-gmp

                  【讨论】:

                    【解决方案11】:

                    查看 /etc/php5/cli/conf.d/ 并删除对应的 *.ini 文件。当您删除一些不那么干净的php包时会发生此错误。

                    【讨论】:

                      【解决方案12】:

                      以下命令解决了我的问题

                      sudo apt-get install php5-mcrypt
                      

                      我有

                      • 带有 Suhosin 补丁 (cli) 的 PHP 5.3.10-1ubuntu3.4
                      • Ubuntu 桌面 12.04
                      • Mysql 5.5

                      【讨论】:

                        【解决方案13】:
                        sudo apt-get install php5-mcrypt
                        sudo apt-get install php5-mysql
                        

                        ...等为我解决了它:)

                        希望对你有帮助

                        【讨论】:

                        • 您的回答让我的网站再次运行!非常感谢,我真的很感激。我花了几个小时在这上面。我按照一些说明升级 mysql,他们一定省略了这部分。
                        猜你喜欢
                        • 1970-01-01
                        • 2020-12-22
                        • 2014-11-29
                        • 2014-04-18
                        • 1970-01-01
                        • 2023-03-14
                        • 2021-11-16
                        • 2011-08-14
                        相关资源
                        最近更新 更多