关于php:致命错误:找不到类“ MySQLi”

Fatal error: Class 'MySQLi' not found

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

Fatal error: Class 'MySQLi' not found (LONG URL) on line 8

第8行的代码是:

1
$mysqli = new MySQLi($db_server, $db_user, $db_pass, $db_name) or die(mysqli_error());

我在网上看到有人说要在我的phpinfo()中将其打开,但是" mysqli"下面没有列出任何内容。

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


听起来您只需要安装MySQLi。

如果您认为自己已完成此操作,但仍然遇到问题,请发布您的操作系统以及可能有助于进一步诊断的其他任何信息。


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

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


如果您使用的是Ubuntu,请运行:

1
 sudo apt-get install php5-mysqlnd


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

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


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

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

这使它对我有用。


我的操作系统是Ubuntu。我通过使用以下方法解决了这个问题:

1
sudo apt-get install php5-mysql


似乎是您的安装问题。

  • 您安装了MySQLi吗?
  • 您是否在php.ini中激活了它?

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


如何在php.ini中启用mysqli

  • 通过删除php.ini中的';'(冒号)以下配置来编辑/取消注释:
    1st(取消注释并添加配置):
    include_path =" C: php includes"
    第二(取消评论):
    extension_dir =" ext"
    第三(取消注释和编辑配置):
    扩展名= C:/PHP/ext/php_mysql.dll
    扩展名= C:/PHP/ext/php_mysqli.dll
  • 重新启动IIS服务器
  • 确保mysql在系统上运行。
  • 如何加载php.ini文件

  • 从C: PHP将文件php.ini-production / php.ini-development中的任何一个重命名为php.ini(请注意,扩展名为ini,即" php.ini")。
  • 重命名为php.ini文件后,重新启动服务器
  • 查看http://localhost/phpinfo.php中的更改

  • 我以为我可以使用Namesco服务器来帮助遇到相同问题的任何人。
    将数据库从家用PC上的本地服务器移至namesco后,我一直试图解决此问题。他们不会帮助他们说这是一个编码问题。

    • 但是,从其CPANEl LINUX托管中修复很容易
      接口。
    • 点击php。
    • 然后单击php模块,然后从其预装模块列表中单击mysqli框。
    • 然后点击保存。 (如果它在另一台服务器上工作,则无需更改代码。)

    不幸的是,他们的支持文章浪费时间。阅读此内容后,我以新的决心进入了管理界面。

    谢谢大家。


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

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

    1
    2
    3
    4
    5
    6
    # 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

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

    我发现了一些步骤。

    我在Ubuntu 14.04上使用PHP版本5.5.9-1ubuntu4.17

    首先检查文件夹

    1
    2
    #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


    在Debian 10上

    1
    2
    3
    apt install php-mysql

    /etc/init.d/apache2 restart

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

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

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

    1
    extension_dir ="ext"

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

    1
    extension=mysqli

    在ubuntu上:

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

    经过长时间的分析,我找到了解决此问题的方法。
    在使用命令行功能正确测试了我的php安装后,我发现php运行良好,并且可以与mysql数据库一起使用。顺便说一句。您可以使用命令php -f filename.php使用php代码运行代码文件
    因此我意识到,Apache一定有问题。
    我只用phpinfo()函数制作了一个文件。
    在这里,我看到了
    加载的配置文件
    我的配置文件未加载,而是被提及(无)。
    最后,我在Apache配置中找到了条目

    PHPINIDir"C:/xampp/php"

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

    1
    2
    3
    <IfModule php7_module>
        PHPINIDir"C:/xampp/php"
    </IfModule>

    重新启动Apache之后,一切正常。

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

    1
    2
    3
    4
    5
    6
    7
    #
    # 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方面。

    因此,我希望它可以帮助某人解决此问题。


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


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?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());
                }
            }
        }
    ?>