【问题标题】:Extension mysqli is missing, phpmyadmin doesn't work缺少扩展 mysqli,phpmyadmin 不起作用
【发布时间】:2012-06-01 21:44:23
【问题描述】:

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

phpinfo(); 脚本,不要显示任何关于 mysqli 或 mysql 扩展的内容。

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

---- **phpMyAdmin - 错误** -------- **缺少 mysqli 扩展。请检查您的 PHP 配置。** ----

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

有人有其他可能的解决方案吗?

【问题讨论】:

  • 取消注释后是否重启了 apache?
  • 在这之后我感到有些愚蠢.. :P 谢谢亨利,我今天打开了我的电脑,一切正常,谢谢!
  • 重启apachesudo /etc/init.d/apache2 restart
  • 如果您得到答案,请关闭此问题

标签: php mysql phpmyadmin ubuntu-12.04


【解决方案1】:

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

此解决方案在 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 文件中也都可以使用extension=/usr/lib/php/20200930/mysqli.so

【讨论】:

    【解决方案2】:

    遇到了同样的问题,但在我的情况下,原因是 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 将无法工作,但显示的原因将是 'The mysqli extension不见了'

    【讨论】:

      【解决方案3】:

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

      适用于 PHP 5

      sudo apt-get install php5-mysqli
      

      适用于 PHP 7.3

      sudo apt-get install php7.3-mysqli
      

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

      extension=mysqli.so
      

      在您的 php.ini 中,在主题 Dynamic Extensions 下。

      重启apache:

      sudo systemctl restart apache2
      

      验证并按回车。

      应该完成!如果问题仍然存在,请删除浏览器缓存。

      【讨论】:

      • 如果问题仍然出现,请清除浏览器缓存
      • 也适用于 php7.4,只需使用:sudo apt-get install php7.4-mysqli
      【解决方案4】:

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

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

      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】:

        对于使用 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
        

        【讨论】:

        • 这个解决方案在带有 PHP 7.4PHP 8.0.7MySQL 8.0.25的 Ubuntu 20.04 桌面上为我工作> 设置。我所做的是编辑 /etc/php/7.4/apache2/php.ini/etc/php/8.0/apache2/php.ini 并按照您在两个文件中所说的替换 e 行。后来sudo systemctl restart apache2sudo systemctl restart mysql重新启动了PHP和MySQL。
        【解决方案6】:

        作为记录,我的系统是 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 为我工作一样。

        【讨论】:

          【解决方案7】:

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

            ;extension=mysqli to   extension=mysqli
          

          并在取消注释后将 extension 变量位置提供给 mysqli.so

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

          然后重新启动服务以确保

          systemctl start mysql
          

          【讨论】:

            【解决方案8】:

            您需要 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】:

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

              extension= php_mysqli.dll
              

              然后停止并启动 apache 和 MySQL,它就会工作。

              【讨论】:

                【解决方案10】:

                由于我在升级后遇到了这个问题,我只是禁用了 Apache2-php5

                a2dismod php5
                

                并激活php7

                a2enmod php7
                

                希望它可以帮助任何人!

                【讨论】:

                  【解决方案11】:

                  ubuntu 用户打开终端并输入以下命令

                  sudo apt-get install mysql
                  

                  之后只需输入这个来重新启动 apache2

                  sudo service apache2 restart 
                  

                  刷新您的浏览器并享受 phhmyadmin

                  【讨论】:

                    【解决方案12】:

                    我尝试了很多答案,但似乎都不起作用,因为 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
                    

                    希望对你有帮助!

                    【讨论】:

                    • 虽然你很小,但你的答案很大。很有帮助。
                    【解决方案13】:

                    在 ubuntu 12.04 我不得不更改 mssql.compatability_mode = On。 穿上就可以了

                    【讨论】:

                    • 你在哪里改变这个?
                    【解决方案14】:
                    sudo apt-get install php5-mysql
                    sudo apt-get install php5-mysqlnd 
                    

                    两种都试一下,对我有用

                    【讨论】:

                    • 我的 apt-get 找不到这些包。有谁知道他们在哪个存储库中?
                    • 实际上 php5 版本已从 repo 中弃用。请从链接askubuntu.com/questions/761713/… 尝试此 PPA
                    • @HardikGajjar 这个问题是关于降级到 php5 的。为什么不直接安装php7.0版本呢? $ sudo apt-get install php7.0-mysql
                    • @NealGokli 就我而言,我必须使用 php5,因为我无法在 Debian Jessie 上安装 php7.0-gd。它需要太高版本的 libwebp5 无法通过 apt 获得。以前可以用,但是用了半年左右就坏了。
                    • 谁能解释为什么会出现这个问题?在我的本地主机中,它发生了很多次。
                    【解决方案15】:

                    只需重启apache2和mysql:

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

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

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

                    【讨论】:

                    • 真的就这么简单。该扩展通过 phpmyadmin 安装,需要重新启动(apache、php5-fpm 等)。这里的许多“解决方案”确实将重新加载网络服务器作为最后一步,事实上 - 在我看来这是唯一需要的。
                    • 这真的没有那么简单。 :-) 你需要安装 mysql/mysqli 扩展。
                    • 很久以前,我问过这个,从来没有结束过这个话题。事实上,第一条评论回答了我的问题,但这是评论,所以我将其作为正确答案。
                    【解决方案16】:

                    检查 extension_dir 是您喜欢从 phpinfo() 检查的事情之一。在我的情况下,默认情况下是 extension_dir = "./" 这是错误的。将其更改为 extension_dir = './ext/' 或所有扩展 dll 当前所在的位置。

                    【讨论】:

                      【解决方案17】:

                      我通过编辑 /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
                      

                      不加路径是不行的。

                      然后在重新启动后它工作了。

                      【讨论】:

                        【解决方案18】:

                        这对我有用,用 php 和 mysql 脚本创建一个数据库并打开 mysql 控制台并输入 create user 'yourName'@'127.0.0.1' 然后输入 grant all permissions on 。 到 'yourName'@'127.0.0.1' 然后打开浏览器转到 localhost 并创建一个数据库,然后转到您的 phpmyadmin 页面,您会看到它在那里弹出。

                        【讨论】:

                          【解决方案19】:

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

                          mysqli.allow_local_infile = On
                          

                          重启 Apache:

                          sudo /etc/init.d/apache2 restart
                          

                          【讨论】:

                          • 谢谢。当 MySQLi 扩展安装正确,但 phpMyAdmin 在 localhost 上运行时使用此解决方案。
                          • 也适用于 PHP 7(请注意新的 php.ini 位置是 /etc/php/7.0/apache2/php.ini)。
                          猜你喜欢
                          • 2017-11-20
                          • 2019-05-23
                          • 2011-10-07
                          • 2013-05-21
                          • 2016-01-08
                          • 2014-06-08
                          相关资源
                          最近更新 更多