致命错误:找不到类'MySQLi'

时间:2009-03-20 16:04:27

标签: php mysqli

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

  

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

第8行的代码是:

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

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

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

26 个答案:

答案 0 :(得分:75)

听起来你只需要install MySQLi

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

答案 1 :(得分:42)

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

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

答案 2 :(得分:35)

如果您在Ubuntu,请运行:

 sudo apt-get install php5-mysqlnd

答案 3 :(得分:15)

如果您正在致电"新的mysqli(..)"在命名空间的类中,您可能会看到类似的错误Fatal error: Class 'foo\bar\mysqli' not found in。修复此问题的方法是使用前面的反斜杠将其显式设置为根命名空间,如下所示:

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

答案 4 :(得分:10)

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

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

这使它对我有用。

答案 5 :(得分:6)

我的OSUbuntu。我通过使用:

解决了这个问题
sudo apt-get install php5-mysql

答案 6 :(得分:2)

看起来像您的安装问题。

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

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

答案 7 :(得分:2)

如果您使用Docker ...

在php容器内部运行:

#docker-php-ext-install mysqli

#apachectl restart

答案 8 :(得分:1)

如何在php.ini中启用mysqli

  1. 通过在php.ini中删除&#39 ;;&#39;(冒号)以下配置来编辑/取消注释: 第一(取消注释并添加配置): include_path =&#34; C:\ php \ includes&#34; 第二次(取消注释): extension_dir =&#34; ext&#34; 第3次(取消注释并修改配置): 延长= C:/PHP/ext/php_mysql.dll 延长= C:/PHP/ext/php_mysqli.dll
  2. 重新启动IIS服务器
  3. 确保系统上正在运行mysql。
  4. 如何加载php.ini文件

    1. 将文件php.ini-production / php.ini-development中的任何一个从C:\ PHP重命名为php.ini(现在请注意,扩展名为ini ie&#34; php.ini&#34;)。
    2. 重命名为php.ini文件后重启服务器
    3. 查看http://localhost/phpinfo.php
    4. 中的更改

答案 9 :(得分:1)

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

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

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

谢谢大家。

答案 10 :(得分: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

答案 11 :(得分:0)

这解决了我最初的“未找到”错误。注意反斜杠,就像现在的梦想一样。只有在使用命名空间时才需要,但现在却没有?

$ mysqli = new \ MySQLi($ db_server,$ db_user,$ db_pass,$ db_name)或死(mysqli_error());

答案 12 :(得分: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

答案 13 :(得分:0)

<?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());
            }
        }
    }
?>

答案 14 :(得分:0)

在Ubuntu上:

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

答案 15 :(得分:0)

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

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

答案 16 :(得分:0)

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

答案 17 :(得分:0)

Debian 10

apt install php-mysql

/etc/init.d/apache2 restart

答案 18 :(得分:0)

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

259
1242
100
100
1242
387   //works fine till here
178   //Problem starts from here
178
178
178
178
178
178
178
178
178
178
178
178
178
178
178
178
178
178
178
178
178
178
178
178

答案 19 :(得分: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

答案 20 :(得分:0)

安装 由PHP扩展phpXX。 对于我的FreeBSD:

pkg install php74-extensions

答案 21 :(得分:0)

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

const hslReges = /hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%(,\s*[\d.]*)?\)/g

extension_dir = "ext"

PS:进行此更改后,别忘了重新启动apache!

答案 22 :(得分:0)

在php.ini中:

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

确保PHP版本正确。

答案 23 :(得分: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,然后再次测试 记住每次测试时都要重置服务器

答案 24 :(得分:0)

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

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

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

答案 25 :(得分:0)

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

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

php-mysqlphp<version>-mysql

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

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

成功了。