我正在做一个教程并收到此错误:
致命错误:第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版本
答案 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)
答案 6 :(得分:2)
答案 7 :(得分:2)
如果您使用Docker ...
在php容器内部运行:
#docker-php-ext-install mysqli
#apachectl restart
答案 8 :(得分:1)
如何在php.ini中启用mysqli
如何加载php.ini文件
答案 9 :(得分:1)
我想我可以使用Namesco服务器帮助任何有同样问题的人。 将数据库从家用PC上的本地服务器移动到namesco后,我一直在尝试解决此问题。他们不会协助他们说这是一个编码问题。
不幸的是,他们的支持文章是浪费时间。读完这篇文章后,我带着一个新的决心去了管理界面。
谢谢大家。
答案 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)
;extension=mysqli
;
符号 if (!function_exists('mysqli_init') && !extension_loaded('mysqli')) {
echo 'We don\'t have mysqli!!!';
} else {
echo 'mysqli is installed';
}
答案 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-mysql
和 php<version>-mysql
我在终端中发出命令 - php --version
,我使用的是 php7.4,
我再次发出 apt install php7.4-mysql
成功了。