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

我正在做一个教程,并得到这个错误:

致命错误: 在第8行找不到类‘ MySQLi’(LONGURL)

第8行的代码是:

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

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

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

362744 次浏览

听起来你只需要 安装 MySQLi

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

看起来你的装置有问题。

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

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

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

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

除了取消 Php.iniPhp _ mysqli. dll扩展的注释,还取消 Php.iniExtension _ dir指令的注释,并指定您的位置:

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

这对我很有用。

Some distributions (such as Gentoo) support multiple installations of PHP, and you have to make sure you're using one with mysqli installed and enabled.

在 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

如果你使用 Ubuntu,运行:

 sudo apt-get install php-mysqlnd

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

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

sudo apt-get install php5-mysql

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

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

我检查了以上所有,它不适合我,

我找到了一些台阶。

我在 Ubuntu 14.04上用了 PHP Version 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

我想我可以用 Namesco 服务器帮助任何有同样问题的人。 我一直在尝试修复这个问题后,移动数据库从我的本地服务器上的主电脑名称。他们不会协助,他们说这是一个编码问题。

  • 然而,这是简单的修复从他们的 CPANEl LINUX 托管 接口。
  • Click on php.
  • 然后单击 php 模块,从预安装模块列表中单击 mysqli 的复选框。
  • 然后单击保存(如果在其他服务器上可以正常工作,则不需要更改代码)

不幸的是,他们的支持文章是在浪费时间。读完这篇文章后,我去管理界面进行了一个新的决定。

The PHP zip includes most of the commonly used extensions (*.dll on windows such as php_mysqli.dll) under the \ext directory, however they are not enabled by default. You might be getting this Fatal Error when trying to use 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

如何在 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. Restart the IIS server
  3. 确保 mysql 在系统上运行。

如何加载 php.ini 文件

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

关于 Ubuntu:

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

经过长时间的分析,我找到了解决这个问题的办法。 After properly testing my php installation with the command line features I found out that the php is working well and could work with the mysql database. Btw. you can run code-files with php code with the command php -f filename.php
So I realized, it must something be wrong with the Apache.
我创建了一个只包含 phpinfo ()函数的文件。
我看到了,排队的时候
已加载的配置文件
没有加载我的配置文件,而是提到了(无)。 < br > < br > 最后,我在 Apache 配置中找到了这个条目

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

But I've installed the PHP 7 and so the Apache could not load the php.ini file because there was no entry for that. 我加了一句

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

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

These code blocks above I found in my httpd-xampp.conf file. May it is somewhere else at your configuration.
在同一个文件中,我更改了 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 方面。

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

Debian 10频道

apt install php-mysql


/etc/init.d/apache2 restart

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

FROM php:fpm


RUN docker-php-ext-install mysqli

如果你在多克。

内部 php 容器运行:

#docker-php-ext-install mysqli


#apachectl restart

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

pkg install php74-extensions

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

extension_dir = "ext"

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

PS: 做了这个更改后,不要忘记重新启动 Apache!

In php.ini :

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

确保 PHP 版本是正确的。

  1. Open your PHP folder.
  2. 找到 php.ini-development 并打开它。
  3. 找到 ;extension=mysqli
  4. delete the ; symbol
  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 中的两个扩展名 _ dir 从“ ext”更改为“ c: php ext” 然后再测试一次 记住每次测试时都要重置服务器

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

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

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

当我尝试我的 PHP 网络应用程序,它给我相同的错误。

通过谷歌我发现 PHP 服务器的 MySQL 插件在我的安装中丢失了。我在使用 Ubuntu,所以当我尝试使用 MySQL 插件的 PHP 时,我发现有2个,

php-mysqlphp<version>-mysql

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

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

It worked.

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