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

I have try following

  1. 在php.ini中启用php_mysqli.dll
  2. 使mysqli.so
  3. 使php_mysqli.so
  4. 安装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/其他如果有指向该文件的符号链接(例如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扩展,它会完成其余的工作。

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

  • 尝试在目录/etc/php/8.1/cli/php.ini文件中注释扩展名=pdo_mysql,如果扩展名未注释
  • uncomments extension=pdo_mysql in directory/etc/php/8.1/apache2/php.ini文件,如果扩展名注释

这个方法适合我

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

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

搜索extension=php_mysqli.so

像这样注释

;extension=php_mysqli.so

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

我是这样解决的:

  1. 添加库到php.ini (etc/php/7.3/apache2;等/php/7.3/cli文件夹)= pdo_mysql延伸。所以

  2. restart apache (sudo systemctl restart apache2)

  3. php.ini中的注释库(etc/php/7.3/apache2;等/php/7.3/cli文件夹)= pdo_mysql延伸。所以

  4. go etc/php/7.3/mod_available

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

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

我使用了以下命令:

cd/etc/php/7.3

sudo rm - rcrypt .so

sudo service apache2 restart

注释掉所有带有。dll扩展名的行,因为你是在Ubuntu上。Ubuntu支持。so文件。

php.iniDynamic Extensions下的extension=php_mysqli.dll行是启用的。

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

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

这为我解决了错误。