我正在做一个教程,并收到此错误:
致命错误:在第8行上找不到类“ MySQLi”(LONG URL)
第8行的代码是:
$mysqli = new MySQLi($db_server, $db_user, $db_pass, $db_name);
我在网上看到有人说要在我的phpinfo()中将其打开,但是“ mysqli”下没有列出任何内容。
另外,我正在运行PHP版本5.2.5
我正在做一个教程,并收到此错误:
致命错误:在第8行上找不到类“ MySQLi”(LONG URL)
第8行的代码是:
$mysqli = new MySQLi($db_server, $db_user, $db_pass, $db_name);
我在网上看到有人说要在我的phpinfo()中将其打开,但是“ mysqli”下没有列出任何内容。
另外,我正在运行PHP版本5.2.5
Answers:
听起来您只需要安装MySQLi即可。
如果您认为自己已完成此操作,但仍然遇到问题,请发布您的操作系统以及可能有助于进一步诊断的其他任何信息。
sudo yum install php-mysqli
sudo yum install php56-mysqlnd.x86_64
(选择与您所安装的php版本匹配的一个)
您可以通过执行以下代码检查mysqli库是否存在:
if (!function_exists('mysqli_init') && !extension_loaded('mysqli')) {
echo 'We don\'t have mysqli!!!';
} else {
echo 'Phew we have it!';
}
除了取消对php_mysqli.dll在扩展php.ini中,也取消注释的extension_dir指令在php.ini中,并注明您的位置:
extension_dir = "C:\software\php\dist\ext"
这使它对我有用。
./ext
但这是相对路径。我不得不重新命名php.ini-development
,以php.ini
和在该文件中取消注释extension=php_mysqli.dll
。哦,男孩,我没有错过您的PHP。
如何在php.ini中启用mysqli
如何加载php.ini文件
似乎是您的安装问题。
一些发行版(例如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
我检查了所有以上内容,但对我却不起作用,
我发现了一些步骤。
我在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
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
在ubuntu上:
sudo apt-get install php-mysql
sudo service apache2 restart
在Debian 10上
apt install php-mysql
/etc/init.d/apache2 restart
经过长时间的分析,我找到了解决该问题的方法。在使用命令行功能正确测试了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方面。
通过PHP安装phpXX-extension。就我的FreeBSD而言:
pkg install php74-extensions
<?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());
}
}
}
?>