【问题标题】:PHP Startup Unable to load dynamic library /usr/lib/php/20151012/php_mysqli.dllPHP启动无法加载动态库/usr/lib/php/20151012/php_mysqli.dll
【发布时间】:2017-01-05 09:50:57
【问题描述】:

我有 ubuntu 14.04 EC2 实例。我已经在上面安装了 php 7。当我执行任何 php 命令时,例如 php --version 或任何其他命令。我收到以下错误

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/20151012/php_mysqli.dll' - /usr/lib/php/20151012/php_mysqli.dll: cannot open shared object file: No such file or directory in Unknown on line 0

我已尝试关注

  1. 在 php.ini 中启用 php_mysqli.dll
  2. 启用 mysqli.so
  3. 启用 php_mysqli.so
  4. sudo apt-get install php-mysql

但没有什么对我有用。

有什么建议可以解决这个问题吗?

【问题讨论】:

    标签: php mysqli amazon-ec2 ubuntu-14.04


    【解决方案1】:

    我设法解决了这个问题:

    1. 将库添加到 php.ini(etc/php/7.3/apache2;etc/php/7.3/cli 文件夹) extension=pdo_mysql.so

    2. 重启 apache (sudo systemctl restart apache2)

    3. 注释 php.ini 中的库(etc/php/7.3/apache2;etc/php/7.3/cli 文件夹) extension=pdo_mysql.so

    4. 去 etc/php/7.3/mod_available

    5. 评论扩展(因为已经加载),例如etc/php/7.3/mod_available/pdo_mysql.ini ;extension=pdo_mysql.so

    【讨论】:

      【解决方案2】:

      我刚遇到同样的问题,发现它们是我的/etc/php/7.0 中的两个文件夹,分别是apache2cli。原来cli/php.ini 中的扩展行没有被dll 文件注释,而不是apache2 目录中的那个。评论它只是解决了问题。

      【讨论】:

      • 我在 mysqli、openssl 和 curl 上遇到了这个问题,按照您的指示评论了所有这些问题并且完美!
      【解决方案3】:

      如果您在 /etc/php/7.2 或 /etc/php/7.3 下看到 mcrypt.so,只需将其删除并重新启动服务器即可解决问题。 当我们将 php 升级到最新版本时,该文件可能会存储到不需要的最新版本。

      我使用了以下命令:

      cd /etc/php/7.3

      sudo rm -rf mcrypt.so

      sudo service apache2 重启

      【讨论】:

        【解决方案4】:

        运行Phpinfo() 搜索你的php.ini 路径

        搜索extension=php_mysqli.so

        这样评论

        ;extension=php_mysqli.so
        

        【讨论】:

          【解决方案5】:

          只需注释掉所有带有 .dll 扩展名的行,因为您使用的是 Ubuntu。 Ubuntu 支持 .so 文件。

          【讨论】:

            【解决方案6】:

            在我的情况下,它发生是因为我取消注释 php.ini 文件中的 extension=php_mysqli.dll 行以运行其他包。谷歌搜索后,我发现您不应该直接从 php.ini 取消注释任何内容,而是应该安装所需的 php 扩展程序,其余的会由它来完成。

            【讨论】:

              【解决方案7】:

              最近在ubuntu16.04上遇到这个问题,终于解决了,像extension=php_*.dll这样每行加一个分号,我想是因为ubuntu上的LAMP足够智能,它会自动打开所有的为我们扩展。在 Windows 上,我们必须手动启用扩展,方法是删除每一行的分号,例如 php.ini 中的 ;extension=php_*.dll

              【讨论】:

                【解决方案8】:

                php.ini 下的Dynamic Extensions 中启用了extension=php_mysqli.dll 行。

                我通过在;extension=php_mysqli.dll 行的开头添加一个分号来禁用它。

                已保存并退出 php.ini。重新启动Apache

                这为我解决了错误。

                【讨论】:

                • 这不是解决方案,你只需删除 lib
                【解决方案9】:

                如果你在 Linux 上,你不应该有 DLL 文件,而应该有 SO 文件。 所以首先,你必须删除/禁用你在 php.ini 中添加的 php_mysqli.dll。

                为了使用mysqli,你应该:

                • 为 Ubuntu 安装软件包:apt-get install php-mysql
                • 检查它是否已经启用(例如phpinfo()
                • 如果未启用,则启用模块 - 如果有mysqli.ini,则检查/etc/php/mods-available/ 文件夹,其中包含extension=mysqli.so,然后检查CLI / FPM / Apache / 其他是否有指向此文件的符号链接(例如对于 CLI,在 /etc/php/cli/conf.d/ 中:20-mysqli.ini -> ../../mods-available/mysqli.ini
                • 重启 php / apache / nginx 取决于你使用的是什么

                【讨论】:

                • 我已经检查过了,这些都已经完成了,但仍然无法正常工作。
                • 同样不工作...太烦人了。我花了 3 个多小时浏览不同的教程,但没有成功...:(
                • 有同样的问题,现在是 24 小时 :(
                猜你喜欢
                • 2017-07-29
                • 2018-01-15
                • 1970-01-01
                • 2018-12-14
                • 2018-03-14
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2018-07-21
                相关资源
                最近更新 更多