提问人:Jass 提问时间:8/29/2016 更新时间:10/19/2023 访问量:128211
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
我试过关注
- 在 php.ini 中启用php_mysqli.dll
- 启用 mysqli.so
- 启用 php_mysqli.so
- sudo apt-get 安装 php-mysql
但对我没有任何帮助。
有什么建议我该如何解决这个问题吗?
答:
如果你使用的是 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.ini
extension=mysqli.so
/etc/php/cli/conf.d/
20-mysqli.ini -> ../../mods-available/mysqli.ini
) - 重新启动 PHP / Apache / Nginx 取决于您使用的是什么
评论
在下线已启用。php.ini
Dynamic Extensions
extension=php_mysqli.dll
我通过在行首添加一个分号来禁用它。;extension=php_mysqli.dll
已保存并退出。重新 启动。php.ini
Apache
这为我解决了错误。
评论
我最近在ubuntu16.04上遇到了这个问题,我终于通过在每行添加一个分号来解决它,我认为这是因为ubuntu上的LAMP足够智能,它会自动为我们打开所有扩展。在 Windows 上,我们必须通过删除每行的分号来手动启用扩展,例如 .extension=php_*.dll
;extension=php_*.dll
php.ini
就我而言,发生这种情况是因为我在php.ini文件中取消了该行的注释以运行其他包。在谷歌搜索之后,我发现您不应该直接从php.ini取消任何评论,而应该安装所需的 PHP 扩展,剩下的就交给它了。extension=php_mysqli.dll
只需注释掉所有带有.dll扩展名的行,因为您使用的是 Ubuntu。Ubuntu 支持 .so 文件。
运行搜索路径Phpinfo()
php.ini
搜索extension=php_mysqli.so
像这样评论
;extension=php_mysqli.so
如果您在 /etc/php/7.2 或 /etc/php/7.3 下看到 mcrypt.so,只需将其删除并重新启动服务器即可解决问题。 当我们将 php 更新到最新版本时,该文件可能会存储到最新版本,这不是必需的。
我使用了以下命令:
光盘 /etc/php/7.3
sudo rm -rf mcrypt.so
sudo 服务 apache2 重启
我只是遇到了同样的问题,并意识到它们是我的两个文件夹,分别是 和 .原来,扩展行未与dll文件一起注释,而不是目录中的扩展行。评论它只是解决了问题。/etc/php/7.0
apache2
cli
cli/php.ini
apache2
评论
我设法解决了这个问题:
将库添加到php.ini(etc/php/7.3/apache2;etc/php/7.3/cli 文件夹) 扩展名=pdo_mysql.so
重新启动 Apache (sudo systemctl 重新启动 apache2)
注释 php.ini 中的库(etc/php/7.3/apache2;etc/php/7.3/cli 文件夹) 扩展名=pdo_mysql.so
去 etc/php/7.3/mod_available
注释扩展(因为它已经加载),例如etc/php/7.3/mod_available/pdo_mysql.ini ;扩展名=pdo_mysql.so
如果您使用的是 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 文件(如果扩展是注释)
这种方法对我有用
就我而言,要解决此问题,您应该首先检查正在使用的php-mysqli版本。您可以利用 php_info() 来获取此信息。确定导致无法加载动态库的原因后,导航到以下文件之一:php.ini /etc/php/{您的 php}/cli/php.ini 或 /etc/php/{您的 php}/apache2/php.ini 版本。在这些文件中,注释掉“extension=mysqli”行(在某些情况下,还注释掉“extension=mbstring”)。
注意:php7.4
评论