Fatal error: Class 'MySQLi' not found
我正在做一个教程,并收到此错误:
Fatal error: Class 'MySQLi' not found (LONG URL) on line 8
第8行的代码是:
1 |
我在网上看到有人说要在我的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(..)",则可能会看到类似的错误
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 |
似乎是您的安装问题。
- 您安装了MySQLi吗?
- 您是否在php.ini中激活了它?
http://www.php.net/manual/zh/mysqli.installation.php
如何在php.ini中启用mysqli
1st(取消注释并添加配置):
include_path =" C: php includes"
第二(取消评论):
extension_dir =" ext"
第三(取消注释和编辑配置):
扩展名= C:/PHP/ext/php_mysql.dll
扩展名= C:/PHP/ext/php_mysqli.dll
如何加载php.ini文件
我以为我可以使用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,请阅读其他答案以进行安装,
打开
就我而言,我必须设置
并重新启动apache2:
在Debian 10上
1 2 3 |
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 |
经过长时间的分析,我找到了解决此问题的方法。
在使用命令行功能正确测试了我的php安装后,我发现php运行良好,并且可以与mysql数据库一起使用。顺便说一句。您可以使用命令php -f filename.php使用php代码运行代码文件
因此我意识到,Apache一定有问题。
我只用phpinfo()函数制作了一个文件。
在这里,我看到了
加载的配置文件
我的配置文件未加载,而是被提及(无)。
最后,我在Apache配置中找到了条目
但是我已经安装了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中的
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()); } } } ?> |