扩展mysqli丢失,phpmyadmin不起作用

时间:2012-05-26 19:30:28

标签: php mysql phpmyadmin ubuntu-12.04

我在ubuntu 12.04上遇到了phpmyadmin的问题。 我已经安装了apache2,php5,mysql和phpmyadmin。

phpinfo();脚本,不显示有关mysqli或mysql扩展名的内容。

当我尝试启动phpmyadmin时,会出现此错误:

----
**phpMyAdmin - Error**
-------
**The mysqli extension is missing. Please check your PHP configuration.**
----

在php.ini文件中,我取消注释extension=mysql.so行,但不起作用...

任何人都有另一种可行的解决方案吗?

20 个答案:

答案 0 :(得分:95)

最新的phpMyAdmin版本需要mysqli扩展,并且将不再使用mysql版本(注意其名称末尾的额外“i”)。

sudo apt-get install php5-mysql

将安装包含旧的和新的包,所以之后您需要做的就是添加

extension=mysqli.so

在你的php.ini中,重新启动apache,它应该可以工作。

答案 1 :(得分:30)

sudo apt-get install php5-mysql
sudo apt-get install php5-mysqlnd 

尝试这两种方式它对我有用

答案 2 :(得分:26)

如果您在localhost上运行PHPMyAdmin,请在文件/etc/php5/apache2/php.ini中取消注释:

mysqli.allow_local_infile = On

重启Apache:

sudo /etc/init.d/apache2 restart

答案 3 :(得分:9)

只需重新启动apache2和mysql:

  • apache2: sudo /etc/init.d/apache2 restart

  • mysql: sudo /etc/init.d/mysql restart

然后刷新浏览器,享受phpmyadmin:)

答案 4 :(得分:5)

我遇到了同样的问题,并通过执行以下步骤解决了该问题:

  1. 首先检查PHP版本。如果您有多个PHP版本。假设您有PHP版本,例如php7.0,php7.1和php 7.2,

  2. 运行这些命令

对于PHP7.0

sudo apt-get install php7.0-mysql
sudo apt-get install php7.0-mysqlnd 

对于PHP7.1

sudo apt-get install php7.1-mysql
sudo apt-get install php7.1-mysqlnd 

对于PHP7.2

sudo apt-get install php7.2-mysql
sudo apt-get install php7.2-mysqlnd 

对于PHP7.3

sudo apt-get install php7.3-mysql
sudo apt-get install php7.3-mysqlnd
  1. 编辑ini文件,然后查找mysqli。通过删除; 取消注释该行 对于所有php版本

    extension = mysqli.so

/etc/php/<php.version>/apache2/php.ini

对于PHP7.0

sudo nano /etc/php/7.0/apache2/php.ini

对于PHP7.1

sudo nano /etc/php/7.1/apache2/php.ini

对于PHP7.2

sudo nano /etc/php/7.2/apache2/php.ini

对于PHP7.3

sudo nano /etc/php/7.3/apache2/php.ini

最后一次重启apache服务器

sudo /etc/init.d/apache2 restart

答案 5 :(得分:3)

我尝试了很多答案,其中没有一个似乎有效,因为php7.0不是默认设置。

sudo apt-get upgrade

似乎为我做了这个工作,但之后我不得不重新安装php7.0和phpmyadmin:

sudo apt-get install php7.0 php7.0-mysql
sudo apt-get install apache2 apache2-mod-php7.0
sudo apt-get install phpmyadmin

希望它有所帮助!

答案 6 :(得分:2)

我通过编辑/usr/local/zend/etc/php.ini解决了这个问题。

(通过执行netstat -nlp | grep apache找到它,然后strace -p somepid | grep php.ini)。

在文件的末尾,我添加了:

extension=/usr/lib/php5/20090626+lfs/mysql.so
extension=/usr/lib/php5/20090626+lfs/mysqli.so
extension=/usr/lib/php5/20090626+lfs/mcrypt.so

在没有路径的情况下添加它不起作用。

然后重新启动后就可以了。

答案 7 :(得分:1)

对于使用php-fpm的Ubuntu 20.04用户 我通过在php conf中添加完整路径来解决此问题:

编辑/etc/php/7.4/fpm/conf.d/20-mysqli.ini

并替换

extension=mysqli.so

具有:

extension=/usr/lib/php/20190902/mysqli.so

答案 8 :(得分:1)

您需要MySQLi模块。手动安装phpMyAdmin时通常会发生此错误。

sudo apt-get install php7.3-mysql

它将返回您。

[Creating config file /etc/php/7.3/mods-available/mysqlnd.ini with new version]

[Creating config file /etc/php/7.3/mods-available/mysqli.ini with new version]

然后。

sudo service apache2 restart.

然后。

Press F5 on your browser.

答案 9 :(得分:0)

我希望我成功的回答对最近的人有所帮助,因为我不得不尝试许多混合搭配然后找到它:

这个解决方案在 Ubuntu 20.04 桌面上对我有用,PHP v7.4PHP v8.0.7MySQL v8.0.25 设置。

我所做的是编辑 /etc/php/7.4/apache2/php.ini/etc/php/8.0/apache2/php.ini 文件并替换 extension=mysqli.soextension=/usr/lib/php/20190902/mysqli.so 在两个文件中。

后来,通过 sudo systemctl restart apache2sudo systemctl restart mysql 重新启动了这两个(PHP 和 MySQL)。刷新了 Chrome,phpMyAdmin 响应了登录屏幕。

(更新:请检查您是否也有 /usr/lib/php/20200930/mysqli.so 文件。我测试了它,因为它按目录日期看起来更新,这也适用于两个 PHP 文件,如 {{ 1}})

答案 10 :(得分:0)

遇到了同样的问题,但在我看来,原因是Ubuntu和php版本的更新-从18.04和php-7.2升级到20.04和php-7.4。

Nginx服务器是相同的,所以在我的 / etc / nginx / sites-available / default 中是旧数据:

server {
  location /pma {
    location ~ ^/pma/(.+\.php)$ {
      fastcgi_pass unix:/run/php/php7.2-fpm.sock;
    }
  }
}

我无法使phpmyadmin处理该线程的任何php.ini更改和所有答案,但是有一段时间我打开了/ etc / nginx / sites-available / default并意识到,我仍然很老版本的php。所以我将其更改为

fastcgi_pass unix:/run/php/php7.4-fpm.sock;

问题消失了,phpmyadmin在没有任何mysqli文件投诉的情况下神奇地开始工作。我什至仔细检查了一下,但是是的,这就是它的工作原理-如果您的nginx配置文件中的php-fpm.sock版本错误,则phpmyadmin将无法工作,但显示的原因将是'mysqli扩展名丢失了

答案 11 :(得分:0)

据记录,我的系统是Ubuntu Server 20.04,这里的解决方案均无效。对我来说,我安装了PHP 7.4,并且不得不编辑enter code here / etc / php / 7.4 / apache2 / php.ini`。

在此范围内,搜索;extension=mysqli,取消注释并将mysqli更改为mysqlnd,使其看起来像extension=mysqlnd。我尝试使用mysqli,但遇到同样的错误,好像我没有启用它,但是mysqlnd为我工作。

答案 12 :(得分:0)

我在ubuntu上遇到了相同的错误,对我有用的是在/etc/php/7.3/apache2/php.ini中编辑两行

  ;extension=mysqli to   extension=mysqli

,并在取消注释后将扩展名变量位置赋予 mysqli.so

   extension=/usr/lib/php/20170718/mysqli.so

然后重新启动服务以确保

systemctl start mysql

答案 13 :(得分:0)

如果您正在使用XAMPP等,只需将此行添加到您的php.ini中。还要检查它是否已经存在,只需删除即可;从它的前面

extension= php_mysqli.dll

停止并启动apache和MySQL,它将正常工作。

答案 14 :(得分:0)

由于升级后出现此问题,因此我只禁用了Apache2-php5

a2dismod php5

并激活了php7

a2enmod php7

希望对所有人都有帮助!

答案 15 :(得分:0)

对于ubuntu用户,请打开您的终端并输入以下命令

sudo apt-get install mysql

之后,只需输入

即可重新启动apache2
sudo service apache2 restart 

刷新您的浏览器并享受phhmyadmin

答案 16 :(得分:0)

在ubuntu 12.04我不得不改变mssql.compatability_mode = On。 穿上并工作

答案 17 :(得分:0)

这对我有用,用php和mysql脚本创建一个数据库并打开mysql控制台并输入create user&#39; yourName&#39; @&#39; 127.0.0.1&#39;然后输入授予的所有权限。到&#39; yourName&#39; @&#39; 127.0.0.1&#39;然后打开一个浏览器转到localhost并建立一个数据库,然后转到你的phpmyadmin页面,你会看到它弹出。

答案 18 :(得分:-1)

检查extension_dir是你想要从phpinfo()检查的东西之一。在我的情况下,它默认是extension_dir =“./”,这是错误的。将其更改为extension_dir ='。/ etc /'或您所有的扩展dll当前所在的位置。

答案 19 :(得分:-6)

这将100%工作

用记事本打开php配置文件,找到行: -

;extension=mysqli.dll

将其更改为

extension=mysqli.dll 

删除';'

保存

然后重新启动apache服务器,它在win xp上为我工作