繁体   English   中英

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

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

我有 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

但对我没有任何用处。

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

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

为了使用 mysqli,你应该:

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

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

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

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

搜索extension=php_mysqli.so

像这样评论

;extension=php_mysqli.so

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

  • 如果扩展取消注释,请尝试在目录 /etc/php/8.1/cli/php.ini 文件中注释 extension=pdo_mysql
  • 如果扩展正在评论,则在目录 /etc/php/8.1/apache2/php.ini 文件中取消注释 extension=pdo_mysql

这种方法对我有用

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

我设法解决了这个问题:

  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

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

我使用了以下命令:

cd /etc/php/7.3

须藤 rm -rf mcrypt.so

须藤服务 apache2 重启

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

Dynamic Extensions下的php.iniextension=php_mysqli.dll已启用。

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

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

这为我解决了错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM