我有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
- 在php.ini中启用php_mysqli.dll
- 使mysqli.so
- 使php_mysqli.so 安装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
中的两个文件夹,分别是apache2
和cli
。原来cli/php.ini
中的扩展行没有被dll文件注释,而不是apache2
目录中的扩展行。
我是这样解决的:
-
添加库到php.ini (etc/php/7.3/apache2;等/php/7.3/cli文件夹)= pdo_mysql延伸。所以
-
restart apache (sudo systemctl restart apache2)
-
php.ini中的注释库(etc/php/7.3/apache2;等/php/7.3/cli文件夹)= pdo_mysql延伸。所以
-
go etc/php/7.3/mod_available
-
注释扩展(因为它已经加载),例如,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.3sudo rm - rcrypt .so
sudo service apache2 restart
注释掉所有带有。dll扩展名的行,因为你是在Ubuntu上。Ubuntu支持。so文件。
在php.ini
中Dynamic Extensions
下的extension=php_mysqli.dll
行是启用的。
我通过在;extension=php_mysqli.dll
行开头添加分号来禁用它。
保存并退出php.ini
。重启Apache
。
这为我解决了错误。