如何解决“致命错误:找不到类'MySQLi'”?

How to solve "Fatal error: Class 'MySQLi' not found"?

提问人:Tylor 提问时间:3/21/2009 最后编辑:DharmanTylor 更新时间:4/15/2023 访问量:406487

问:

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

致命错误:在第 8 行找不到类“MySQLi”(LONG URL)

第 8 行的代码是:

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

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

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

PHP MySQLI

评论

0赞 john-jones 8/3/2015
相关新闻: stackoverflow.com/questions/19305919/...
0赞 chickens 8/17/2012
您可以使用手写的 MYSQLi 类,因此无需安装 mysqli。如果您不拥有服务器,这是唯一的解决方案。
0赞 Soner from The Ottoman Empire 11/1/2020
如果您来自 php storm -> intellij-support.jetbrains.com/hc/en-us/community/posts/... 或 web.archive.org/web/20200805054537/https://...
0赞 undefined 7/2/2021
在 PHP 7.4 上,至少类名是小写的new mysqli()

答:

111赞 Greg 3/21/2009 #1

听起来你只需要安装MySQLi

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

评论

26赞 bobobobo 9/12/2014
在 AWS 上,您只需运行 sudo yum install php-mysqli
0赞 JeanCarlos Chavarria 4/30/2018
对我来说,它是用以下方法修复的:apt-get install php7.0-mysql。我在 Raspbian Stretch 9 上运行
0赞 auspicious99 12/3/2018
在带有 Amazon Linux 的 AWS 上,它会是这样的(选择与您安装的 php 版本匹配的那个)sudo yum install php56-mysqlnd.x86_64
5赞 Ali Shan 10/14/2021
我正在使用 Windows 10 并使用 zip 文件夹安装了 php。我的 php.int 包含 extension=mysqli 。但我仍然收到错误未定义函数 mysqli_connect()
0赞 Gary U.U. Unixuser 2/20/2023
在 Ubuntu 上,它不再是发行版的一部分。您可以随时使用以下命令安装它: sudo apt-get install php-mysqlnd
2赞 vartec 3/21/2009 #2

您的安装似乎有问题。

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

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

50赞 karim79 3/22/2009 #3

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

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

评论

6赞 Banned_User 1/2/2015
即使运行“sudo apt-get install php5-mysqlnd”,我仍然收到“我们没有mysqli!!”?
0赞 CodeConnoisseur 8/17/2018
我得到“呸,我们有它,但我不断收到相同的错误,即类”msqli“未找到......有什么想法吗?
2赞 Timo 3/16/2022
我认为 OP 想要一个解决方案,而不是检查错误是否存在。所以也许你可以改善你的线条。
0赞 Your Common Sense 12/1/2023
这是一个很好的答案。为该问题提供了出色的解决方案
18赞 catawampus 10/23/2010 #4

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

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

这使它为我工作。

评论

4赞 Overdrivr 3/18/2017
它对我有用,但与哪个是相对路径。我不得不重命名并取消对该文件的注释.哦,天哪,我没有想念你PHP。./extphp.ini-developmentphp.iniextension=php_mysqli.dll
0赞 Niki Romagnoli 10/16/2019
对我来说(在 Windows 上)的诀窍是在“extension_dir”中输入扩展目录的绝对路径。
0赞 Timo 3/16/2022
这里的解决方案适用于 Windows,不适用于其他操作系统。
0赞 Jared Thirsk 11/16/2013 #5

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

在Gentoo上,我安装了一个新的PHP(启用了mysqli USE标志),但是我需要激活新版本的PHP(因为旧的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
47赞 anshuman 3/20/2014 #6

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

 sudo apt-get install php-mysqlnd

在此之后不要忘记重新启动 php 服务(Apache 或 php-fpm 取决于设置)。

评论

7赞 fracz 3/23/2015
在此之后不要忘记重新启动 Apache!
0赞 James 5/18/2015
@fracz 重新启动 Apache 是我忘记的部分。我只重新启动了MySQL。谢谢。
1赞 Balmipour 9/17/2015
这还不够。我仍然缺少php5-mysql包。用于两者兼而有之。这是你错过的吗,@Hermann Ingjaldsson?sudoapt-get -y install php5-mysql php5-mysqlnd
0赞 john-jones 9/17/2015
这是一些配置错误。stackoverflow.com/questions/31535173/......
0赞 Stephane Marchand 7/29/2021
解决了我的问题,apt install mysqlnd 但是,我的 php 应用程序之前可以工作......它因上述错误而停止。
5赞 user3839088 7/15/2014 #7

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

sudo apt-get install php5-mysql

评论

0赞 Ailton F. Silva Amorim 5/30/2019
在 mint 19 上:sudo apt-get install php-mysql
36赞 alexkb 3/9/2015 #8

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

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

评论

1赞 James Bailey 11/9/2018
这应该是首先要看的。
0赞 aizadaizadaizad 11/7/2023
祝福,这确实有效。
0赞 vanduc1102 7/18/2016 #9

我检查了上面的所有内容,它对我不起作用,

我发现了一些步骤。

我在 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,请阅读其他答案以安装它,

打开查找extension_dirphp.ini

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

并重新启动 apache2 :/ect/init.d/apache2 restart

1赞 John 10/25/2017 #10

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

  • 但是,从他们的 CPANEl LINUX 主机修复很简单 接口。
  • 单击 php。
  • 然后单击PHP模块,然后从其预安装模块列表中单击MySQLI框。
  • 然后点击保存。(如果代码在另一台服务器上有效,则无需更改代码。

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

1赞 Griknok 3/12/2018 #11

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
3赞 Gani 6/11/2018 #12

如何在php.ini中启用mysqli

  1. 通过删除 ';' 来编辑/取消注释(冒号)php.ini中的以下配置: 第一个(取消注释并添加配置): 第二个(取消注释): 第三个(取消注释和编辑配置):
    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 中的更改
0赞 vishalknishad 7/26/2018 #13

在 Ubuntu 上:

sudo apt-get install php-mysql
sudo service apache2 restart
0赞 Klaus-Peter Ow Lex 11/2/2018 #14

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

最后,我在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 方面。

1赞 Andrei 3/23/2019 #15

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

0赞 Salvador Rueda 1/3/2020 #16

Debian 10

apt install php-mysql

/etc/init.d/apache2 restart
2赞 bozdoz 4/18/2020 #17

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

FROM php:fpm

RUN docker-php-ext-install mysqli
13赞 reyqueson 4/24/2020 #18

如果你在 Docker 上...

在 php-container RUN 中:

#docker-php-ext-install mysqli

#apachectl restart
0赞 Biddut Mitra 7/21/2020 #19

安装 phpXX-extension 的 PHP. 在我的 FreeBSD 案例中:

pkg install php74-extensions
0赞 Andrei 9/12/2020 #20

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

extension_dir = "ext"

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

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

0赞 Papa Mike 9/22/2020 #21

在 php.ini 中:

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

确保PHP版本正确。

3赞 Anji 11/11/2020 #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 中的两个extension_dir.ini从“ext”更改为“c:\php\ext” 和 extension=mysqli 到 extension=php_mysqli.dll 然后再次测试 每次测试时记得重置服务器
1赞 olios 4/14/2021 #23

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

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

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

-1赞 Willey Hute 7/9/2021 #24

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

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

php-mysqlphp<version>-mysql

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

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

成功了。

-2赞 16851556 9/2/2021 #25

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

-1赞 Helge Telefonmann 4/15/2023 #26

如果您尝试了上述所有答案,但仍然不走运,请检查系统上安装的软件包的版本号是否真的匹配:

apache2-mod_php7-7.4.33-150200.3.46.2.x86_64
php7-mysql-7.4.33-150200.3.46.2.x86_64

有一次我不得不从不同的存储库进行手动安装,这导致某些库无法加载(尽管他们的配置正常并且他们的 .ini 文件正在解析)。

您也可以尝试使用

php -S <server_ip>:8080

启动测试服务器并查看丢失的模块(mysqli)是否加载到该服务器。如果它出现在 phpinfo 中(并且不出现在您的常规配置中),那么您至少知道在哪里查看......