【问题标题】:How to solve "Fatal error: Class 'MySQLi' not found"?如何解决“致命错误:找不到类 'MySQLi'”?
【发布时间】:2010-10-14 14:05:44
【问题描述】:

我正在做一个教程并收到此错误:

致命错误:第 8 行未找到“MySQLi”类(长 URL)

第8行的代码是:

$mysqli = new MySQLi($db_server, $db_user, $db_pass, $db_name);

我在网上看到有人说要看看我的phpinfo()中是否打开了它,但是“mysqli”下面没有列出任何东西。

另外,我正在运行 PHP 版本 5.2.5

【问题讨论】:

标签: php mysqli


【解决方案1】:

听起来你只需要install MySQLi

如果您认为您已经这样做了,但仍然有问题,请发布您的操作系统和任何其他可能有助于进一步诊断的信息。

【讨论】:

  • 在 AWS 上,您只需运行 sudo yum install php-mysqli
  • 对我来说它被修复了:apt-get install php7.0-mysql。我在 Raspbian Stretch 9 上运行
  • 在带有 amazon linux 的 AWS 上,它类似于 sudo yum install php56-mysqlnd.x86_64(选择与您安装的 php 版本匹配的那个)
  • 我使用的是 Windows 10 并使用 zip 文件夹安装了 php。我的 php.int 包含 extension=mysqli 。但我仍然收到错误 undefined function mysqli_connect()
【解决方案2】:

您可以通过执行以下代码来检查 mysqli 库是否存在:

if (!function_exists('mysqli_init') && !extension_loaded('mysqli')) {
    echo 'We don\'t have mysqli!!!';
} else {
    echo 'Phew we have it!';
}

【讨论】:

  • 我仍然得到“我们没有 mysqli !!!”即使在运行 `sudo apt-get install php5-mysqlnd` 之后?
  • 我得到了 '呸,我们有它,但我一直收到与 Class 'msqli' not found in 相同的错误......有什么想法吗?
【解决方案3】:

如果你在Ubuntu,运行:

 sudo apt-get install php-mysqlnd

【讨论】:

  • 在此之后不要忘记重新启动 Apache!
  • @fracz 重新启动 Apache 是我忘记的部分。我只重新启动了 MySQL。谢谢。
  • 这还不够。我仍然缺少 php5-mysql 包。使用 sudo apt-get -y install php5-mysql php5-mysqlnd 获取两者。这是你错过的吗,@Hermann Ingjaldsson?
  • 这是一些配置错误。 stackoverflow.com/questions/31535173/…
  • 解决了我的问题,apt install mysqlnd 但是,我的 php 应用程序之前可以工作......它停止并出现上述错误。
【解决方案4】:

如果您在命名空间的类中调用“new mysqli(..)”,您可能会看到类似的错误 Fatal error: Class 'foo\bar\mysqli' not found in。解决这个问题的方法是使用前面的反斜杠将其显式设置为根命名空间,如下所示:

<?php 
$mysqli = new \MySQLi($db_server, $db_user, $db_pass, $db_name);

【讨论】:

  • 这应该是首先要看的。
【解决方案5】:

除了取消注释 php.ini 中的 php_mysqli.dll 扩展,还要取消注释 php.ini 中的 extension_dir 指令 并指定您的位置:

extension_dir = "C:\software\php\dist\ext"

这使它对我有用。

【讨论】:

  • 它对我有用,但 ./ext 是相对路径。我不得不将php.ini-development 重命名为php.ini 并在该文件extension=php_mysqli.dll 中取消注释。哦,男孩,我没有想念你 PHP。
  • 对我来说(在 Windows 上)的诀窍是在“extension_dir”中输入扩展目录的绝对路径。
【解决方案6】:

我的OSUbuntu。我通过使用解决了这个问题:

sudo apt-get install php5-mysql

【讨论】:

  • 在薄荷 19 上:sudo apt-get install php-mysql
【解决方案7】:

如果你在 Docker 上...

在 php-container 内运行:

#docker-php-ext-install mysqli

#apachectl restart

【讨论】:

    【解决方案8】:

    如何在 php.ini 中启用 mysqli

    1. 通过删除 ';'(冒号)来编辑/取消注释 php.ini 中的以下配置: 1st(取消注释并添加配置):
      include_path = "C:\php\includes"
      
      第二次(取消注释):
      extension_dir = "ext"
      
      3rd(取消注释并编辑配置):
      extension=C:/PHP/ext/php_mysql.dll
      extension=C:/PHP/ext/php_mysqli.dll
      
    2. 重启 IIS 服务器
    3. 确保系统上正在运行 mysql。

    如何加载 php.ini 文件

    1. 将任何一个文件 php.ini-production/php.ini-development 从 C:\PHP 重命名为 php.ini(注意现在扩展名为 ini,即“php.ini”)。
    2. 重命名为php.ini文件后重启服务器
    3. 查看http://localhost/phpinfo.php的变化

    【讨论】:

      【解决方案9】:

      您的安装似乎有问题。

      • 您是否安装了 MySQLi?
      • 你在php.ini中激活了吗?
      • 重新启动 Apache 和/或 PHP-FPM?

      http://www.php.net/manual/en/mysqli.installation.php

      【讨论】:

        【解决方案10】:

        在全新安装 PHP 时,删除 php.ini 中 extension_dir 之前的 ;

        【讨论】:

          【解决方案11】:

          对于任何使用 docker 的人,我遇到了这个问题,并通过使用我自己的 Dockerfile 而不是 php:fpm 图像解决了它:

          FROM php:fpm
          
          RUN docker-php-ext-install mysqli
          

          【讨论】:

            【解决方案12】:

            我想我可以帮助任何使用 Namesco 服务器遇到同样问题的人。 在将数据库从家用电脑上的本地服务器移动到 namesco 后,我一直在尝试解决这个问题。他们不会提供帮助,他们说这是一个编码问题。

            • 但是,从他们的 CPANEl LINUX 主机中修复很简单 界面。
            • 点击php。
            • 然后单击 php 模块,然后从它们的预安装模块列表中单击 mysqli 框。
            • 然后点击保存。 (如果它在另一台服务器上工作,则无需更改代码。)

            不幸的是,他们的支持文章是浪费时间。读完这篇文章后,我带着新的决心进入了管理界面。

            【讨论】:

              【解决方案13】:

              某些发行版(例如Gentoo)支持多个 PHP 安装,您必须确保您使用的是安装并启用了 mysqli 的一个。

              在 Gentoo 上,我安装了一个新的 PHP(启用了 mysqli USE 标志),但我需要激活新版本的 PHP(因为旧版本肯定缺少 mysqli):

              # eselect php list apache2
                [1]   php5.3 *
                [2]   php5.5
              # eselect php set apache2 2
              You have to run `/etc/init.d/apache2 restart' for the changes to take effect
              # /etc/init.d/apache2 restart
              

              【讨论】:

                【解决方案14】:

                我检查了以上所有内容,但对我不起作用,

                我找到了一些步骤。

                我在 Ubuntu 14.04

                上使用了 PHP 版本 5.5.9-1ubuntu4.17

                首先检查文件夹

                #ls /etc/php5/mods-available/
                json.ini  mcrypt.ini  mysqli.ini  mysql.ini  mysqlnd.ini  opcache.ini  pdo.ini  pdo_mysql.ini  readline.ini  xcache.ini
                

                如果它不包含 mysqli.ini,请阅读其他答案以安装它,

                打开php.ini找到extension_dir

                就我而言,我必须设置extension_dir = /usr/lib/php5/20121212

                然后重启 apache2:/ect/init.d/apache2 restart

                【讨论】:

                  【解决方案15】:

                  PHP zip 包含 \ext 目录下的大多数常用扩展名(Windows 上的 *.dll,例如 php_mysqli.dll),但默认情况下未启用它们。尝试使用 MySQLi 时,您可能会遇到此致命错误:

                  ( ! ) Fatal error: Uncaught Error: Class 'mysqli' not found in C:\myProject\ class.Database.php on line 24
                  

                  要启用扩展,请打开 php.ini(您可能需要先将 php.ini-development 复制为 php.ini),然后取消注释(或添加)这两行:

                  extension_dir = "ext"
                  

                  以及您遇到致命错误的任何特定扩展,例如 mysqli:

                  extension=mysqli
                  

                  【讨论】:

                    【解决方案16】:

                    在 ubuntu 上:

                    sudo apt-get install php-mysql
                    sudo service apache2 restart
                    

                    【讨论】:

                      【解决方案17】:

                      关于 Debian 10

                      apt install php-mysql
                      
                      /etc/init.d/apache2 restart
                      

                      【讨论】:

                        【解决方案18】:

                        经过漫长的分析过程,我找到了解决此问题的方法。 在使用命令行功能正确测试我的 php 安装后,我发现 php 运行良好并且可以与 mysql 数据库一起使用。顺便提一句。您可以使用命令 php -f filename.php
                        运行带有 php 代码的代码文件 所以我意识到,一定是 Apache 出了问题。
                        我创建了一个文件,里面只有 phpinfo() 函数。
                        在这里我看到,在
                        Loaded Configuration File
                        行中 我的配置文件没有被加载,而是被提及(没有)。

                        最后我在 Apache 配置中找到了条目

                        <IfModule php5_module>
                            PHPINIDir "C:/xampp/php"
                        </IfModule>
                        

                        但我已经安装了 PHP 7,因此 Apache 无法加载 php.ini 文件,因为没有相应的条目。 我加了

                        <IfModule php7_module>
                            PHPINIDir "C:/xampp/php"
                        </IfModule>
                        

                        重启 Apache 后一切正常。

                        我在我的 httpd-xampp.conf 文件中找到了上面的这些代码块。可能它在您的配置中的其他位置。
                        在同一个文件中,我在 php 7 的设置之前更改了作为 php 5 版本的替代品。

                        #
                        # PHP-Module setup
                        #
                        #LoadFile "C:/xampp/php/php5ts.dll"
                        #LoadModule php5_module "C:/xampp/php/php5apache2_4.dll"
                        LoadFile "C:/xampp/php/php7ts.dll"
                        LoadModule php7_module "C:/xampp/php/php7apache2_4.dll"
                        

                        如您所见,我已经安装了 xampp 包,但这个问题只是在 Apache 方面。

                        【讨论】:

                          【解决方案19】:

                          安装 PHP 的 phpXX 扩展。 以我的 FreeBSD 为例:

                          pkg install php74-extensions
                          

                          【讨论】:

                            【解决方案20】:

                            我正在使用 xampp,我的问题在我重命名后得到解决:

                            extension_dir = "ext"
                            

                            extension_dir = "C:\xampp\php\ext"
                            

                            PS:进行此更改后不要忘记重新启动 apache!

                            【讨论】:

                              【解决方案21】:

                              在 php.ini 中:

                              extension_dir ="c:/wamp64/bin/php/php7.4.9/ext/"
                              

                              确保 PHP 版本正确。

                              【讨论】:

                                【解决方案22】:
                                1. 打开您的 PHP 文件夹。
                                2. 找到 php.ini-development 并打开它。
                                3. 查找;extension=mysqli
                                4. 删除;符号
                                5. 保存文件并将文件扩展名从 php.ini-development 更改为 php.ini
                                6. 重启服务器并测试代码:
                                    if (!function_exists('mysqli_init') && !extension_loaded('mysqli')) {  
                                            echo 'We don\'t have mysqli!!!';  
                                     } else {  
                                         echo 'mysqli is installed';
                                     }
                                
                                1. 如果它不起作用,请将 php.ini 中的两个 extension_dir 从“ext”更改为“c:\php\ext” 和 extension=mysqli 到 extension=php_mysqli.dll 然后再次测试 记得每次测试时重置服务器

                                【讨论】:

                                  【解决方案23】:

                                  您所要做的就是转到php.ini 文件并在第926 行(取决于版本)删除#。它应该是这样的:

                                  ;extension=ldap
                                  ;extension=mbstring
                                  ;extension=exif
                                  extension=mysqli
                                  ;extension=oci8_12c
                                  ;extension=odbc
                                  

                                  保存文件并以管理员身份打开控制台 (cmd)。转到路径Apache24 / bin 并输入httpd -k restart。此命令将重新启动您的服务器。之后,刷新页面,一切正常。

                                  【讨论】:

                                    【解决方案24】:

                                    当我尝试我的 PHP Web 应用程序时,它给了我同样的错误。

                                    通过谷歌搜索,我发现我的安装中缺少 PHP 服务器的 MySQL 插件。我使用的是 Ubuntu,所以当我尝试 PHP 的 MySQL 插件时,我发现有 2 个,

                                    php-mysqlphp&lt;version&gt;-mysql

                                    我在终端中发出命令 - php --version,我使用的是 php7.4,

                                    我再次发出apt install php7.4-mysql

                                    成功了。

                                    【讨论】:

                                      【解决方案25】:

                                      此问题也可能是由 .htaccess 文件配置错误引起的。

                                      【讨论】:

                                        【解决方案26】:
                                        <?php  /* If the error is due to calling mysqli in a class */
                                        
                                            class dbconnect extends mysqli{
                                        
                                                private $host = 'localhost';
                                                private $user = 'root';
                                                private $pass = '';
                                                private $db = 'test';
                                        
                                                public function __construct() {
                                                    parent::__construct($this->host, $this->user, $this->pass, $this->db);
                                        
                                                    if (mysqli_connect_error()) {
                                                        die('Connect Error (' . mysqli_connect_errno() . ') ' .
                                                            mysqli_connect_error());
                                                    }
                                                }
                                            }
                                        ?>
                                        

                                        【讨论】:

                                          猜你喜欢
                                          • 2017-09-02
                                          • 2013-01-04
                                          • 2014-12-16
                                          • 2017-03-01
                                          • 1970-01-01
                                          • 2018-05-17
                                          • 1970-01-01
                                          • 1970-01-01
                                          相关资源
                                          最近更新 更多