113

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

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

第 8 行的代码是:

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

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

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

4

26 回答 26

99

听起来你只需要安装 MySQLi

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

于 2009-03-20T16:07:34.473 回答
50

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

if (!function_exists('mysqli_init') && !extension_loaded('mysqli')) {
    echo 'We don\'t have mysqli!!!';
} else {
    echo 'Phew we have it!';
}
于 2009-03-21T21:12:28.850 回答
41

如果您在Ubuntu上,请运行:

 sudo apt-get install php-mysqlnd
于 2014-03-20T06:35:15.720 回答
29

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

<?php 
$mysqli = new \MySQLi($db_server, $db_user, $db_pass, $db_name);
于 2015-03-09T02:06:14.573 回答
15

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

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

这使它对我有用。

于 2010-10-22T19:16:53.437 回答
5

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

sudo apt-get install php5-mysql
于 2014-07-15T02:23:01.857 回答
4

如果你在 Docker 上...

在 php-container 内部运行:

#docker-php-ext-install mysqli

#apachectl restart
于 2020-04-24T13:22:27.930 回答
3

如何在 php.ini 中启用 mysqli

  1. 通过删除 ';'(冒号)来编辑/取消注释 php.ini 中的以下配置: 1st(取消注释并添加配置):
    include_path = "C:\php\includes"
    
    第二(取消注释):
    extension_dir = "ext"
    
    第三(取消注释并编辑配置):
    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 中的变化
于 2018-06-11T10:59:03.253 回答
2

好像你的安装有问题。

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

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

于 2009-03-20T16:08:48.433 回答
1

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

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

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

于 2017-10-25T15:51:51.337 回答
1

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

于 2019-03-23T00:52:57.960 回答
1

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

FROM php:fpm

RUN docker-php-ext-install mysqli
于 2020-04-17T19:09:31.107 回答
0

一些发行版(例如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
于 2013-11-16T01:55:50.517 回答
0

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

我找到了一些步骤。

我在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

于 2016-07-18T08:03:54.210 回答
0

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
于 2018-03-12T02:26:59.597 回答
0

在 ubuntu 上:

sudo apt-get install php-mysql
sudo service apache2 restart
于 2018-07-25T17:40:04.177 回答
0

经过长时间的分析过程,我找到了解决此问题的方法。在使用命令行功能正确测试我的 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 方面。

于 2018-11-01T19:58:27.707 回答
0

Debian 10上

apt install php-mysql

/etc/init.d/apache2 restart
于 2020-01-02T20:44:15.630 回答
0

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

pkg install php74-extensions
于 2020-07-20T19:23:50.773 回答
0

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

extension_dir = "ext"

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

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

于 2020-09-12T02:27:56.287 回答
0

在 php.ini 中:

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

确保 PHP 版本正确。

于 2020-09-22T15:19:30.417 回答
0
  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 然后再次测试 请记住每次测试时重置服务器
于 2020-11-11T12:12:23.593 回答
0

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

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

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

于 2021-04-14T08:58:45.613 回答
0

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

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

php-mysqlphp<version>-mysql

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

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

有效。

于 2021-07-09T03:35:15.983 回答
0

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

于 2021-09-02T10:01:06.677 回答
-2
<?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());
            }
        }
    }
?>
于 2014-10-20T11:08:52.547 回答