PHP 启动:无法加载动态库 /usr/lib/php/20151012/php_mysqli.dll

PHP Startup Unable to load dynamic library /usr/lib/php/20151012/php_mysqli.dll

提问人:Jass 提问时间:8/29/2016 更新时间:10/19/2023 访问量:128211

问:

我有 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 安装 php-mysql

但对我没有任何帮助。

有什么建议我该如何解决这个问题吗?

php mysqli amazon-ec2 ubuntu-14.04

评论


答:

18赞 jquiaios 8/29/2016 #1

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

为了使用mysqli,您应该:

  • 安装 Ubuntu 的软件包:apt-get install php-mysql
  • 检查它是否已启用(例如)phpinfo()
  • 如果未启用,请启用模块 - check in 文件夹(如果有包含 ,则检查 CLI/FPM/Apache/other,如果有指向此文件的符号链接(例如,对于 CLI,在:/etc/php/mods-available/mysqli.iniextension=mysqli.so/etc/php/cli/conf.d/20-mysqli.ini -> ../../mods-available/mysqli.ini)
  • 重新启动 PHP / Apache / Nginx 取决于您使用的是什么

评论

2赞 Jass 8/30/2016
我已经检查过了,这些事情都已经完成,但仍然不起作用。
2赞 Skipper07 11/23/2019
同样不行...太烦人了。我花了 3 个多小时浏览不同的教程,但没有成功......:(
3赞 Aman Deep 4/5/2021
有同样的问题,它的 24 小时现在:(
0赞 Timo 3/16/2022
我有 wsl2 和 debian,并且 - 我的错 - 取消了php_mysqli.dll行的注释。再次评论后,警告消失了。
-4赞 Triston 3/8/2017 #2

在下线已启用。php.iniDynamic Extensionsextension=php_mysqli.dll

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

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

这为我解决了错误。

评论

0赞 Nestor 12/6/2018
这不是解决方案,您只需删除库即可
2赞 skiwer 4/5/2017 #3

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

13赞 Nilkamal Gotarne 11/22/2017 #4

就我而言,发生这种情况是因为我在php.ini文件中取消了该行的注释以运行其他包。在谷歌搜索之后,我发现您不应该直接从php.ini取消任何评论,而应该安装所需的 PHP 扩展,剩下的就交给它了。extension=php_mysqli.dll

-2赞 Oleksii Danylevskyi 3/24/2018 #5

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

2赞 Babu Pandey 4/18/2019 #6

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

搜索extension=php_mysqli.so

像这样评论

;extension=php_mysqli.so
-1赞 shivanisdev 5/3/2019 #7

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

我使用了以下命令:

光盘 /etc/php/7.3

sudo rm -rf mcrypt.so

sudo 服务 apache2 重启

1赞 Sylordis 7/23/2019 #8

我只是遇到了同样的问题,并意识到它们是我的两个文件夹,分别是 和 .原来,扩展行未与dll文件一起注释,而不是目录中的扩展行。评论它只是解决了问题。/etc/php/7.0apache2clicli/php.iniapache2

评论

0赞 cdsaenz 3/6/2020
我在使用 mysqli、openssl 和 curl 时遇到了这个问题,按照您的指示评论了所有这些问题,并且很完美!
1赞 Lukas Zmoginas 5/24/2020 #9

我设法解决了这个问题:

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

  2. 重新启动 Apache (sudo systemctl 重新启动 apache2)

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

  4. 去 etc/php/7.3/mod_available

  5. 注释扩展(因为它已经加载),例如etc/php/7.3/mod_available/pdo_mysql.ini ;扩展名=pdo_mysql.so

4赞 imingame 4/23/2022 #10

如果您使用的是 Linux 并使用 php8.1,

  • 如果扩展名取消注释,请尝试在目录 /etc/php/8.1/cli/php.ini 文件中注释 extension=pdo_mysql
  • 取消注释 extension=pdo_mysql in directory /etc/php/8.1/apache2/php.ini 文件(如果扩展是注释)

这种方法对我有用

0赞 Muhammad Fachrurrozi 10/19/2023 #11

就我而言,要解决此问题,您应该首先检查正在使用的php-mysqli版本。您可以利用 php_info() 来获取此信息。确定导致无法加载动态库的原因后,导航到以下文件之一:php.ini /etc/php/{您的 php}/cli/php.ini 或 /etc/php/{您的 php}/apache2/php.ini 版本。在这些文件中,注释掉“extension=mysqli”行(在某些情况下,还注释掉“extension=mbstring”)。

注意:php7.4