我正在做一个教程,并收到此错误:
致命错误:第 8 行未找到“MySQLi”类(长 URL)
第 8 行的代码是:
$mysqli = new MySQLi($db_server, $db_user, $db_pass, $db_name);
我在网上看到有人说要查看它是否在我的 phpinfo() 中打开,但是“mysqli”下没有列出任何内容。
另外,我正在运行 PHP 版本 5.2.5
听起来你只需要安装 MySQLi。
如果您认为您已经这样做了但仍然有问题,请发布您的操作系统和任何其他可能有助于进一步诊断它的内容。
您可以通过执行以下代码来检查 mysqli 库是否存在:
if (!function_exists('mysqli_init') && !extension_loaded('mysqli')) {
echo 'We don\'t have mysqli!!!';
} else {
echo 'Phew we have it!';
}
如果您在Ubuntu上,请运行:
sudo apt-get install php-mysqlnd
如果您从命名空间的类中调用“new mysqli(..)”,您可能会看到类似的错误Fatal error: Class 'foo\bar\mysqli' not found in
。解决这个问题的方法是使用前面的反斜杠将其显式设置为根命名空间,如下所示:
<?php
$mysqli = new \MySQLi($db_server, $db_user, $db_pass, $db_name);
除了取消注释 php.ini 中的php_mysqli.dll 扩展名外,还要取消注释 php.ini中的extension_dir指令并指定您的位置:
extension_dir = "C:\software\php\dist\ext"
这使它对我有用。
如果你在 Docker 上...
在 php-container 内部运行:
#docker-php-ext-install mysqli
#apachectl restart
如何在 php.ini 中启用 mysqli
include_path = "C:\php\includes"
第二(取消注释):
extension_dir = "ext"
第三(取消注释并编辑配置):
extension=C:/PHP/ext/php_mysql.dll
extension=C:/PHP/ext/php_mysqli.dll
如何加载 php.ini 文件
好像你的安装有问题。
我想我可以帮助任何使用 Namesco 服务器遇到同样问题的人。在将数据库从家用电脑上的本地服务器移动到 namesco 后,我一直在尝试解决这个问题。他们不会提供帮助,他们说这是一个编码问题。
不幸的是,他们的支持文章是浪费时间。读完这篇文章后,我带着新的决心进入了管理界面。
在全新安装 PHP 时,在 php.ini 中删除;
之前。extension_dir
对于使用 docker 的任何人,我都遇到了这个问题,并通过使用我自己的 Dockerfile 而不是 php:fpm 图像来解决它:
FROM php:fpm
RUN docker-php-ext-install mysqli
一些发行版(例如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
经过长时间的分析过程,我找到了解决此问题的方法。在使用命令行功能正确测试我的 php 安装后,我发现 php 运行良好并且可以与 mysql 数据库一起使用。顺便提一句。您可以使用命令 php -f filename.php 使用 php 代码运行代码文件
所以我意识到,Apache 一定有问题。
我制作了一个文件,里面只有 phpinfo() 函数。
在这里,我看到,在
Loaded Configuration File
行中
我的配置文件没有加载,而是提到了(没有)。
最后我在 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 方面。
在Debian 10上
apt install php-mysql
/etc/init.d/apache2 restart
通过 PHP 安装 phpXX 扩展。以我的 FreeBSD 为例:
pkg install php74-extensions
我正在使用 xampp,我的问题在我重命名后得到解决:
extension_dir = "ext"
到
extension_dir = "C:\xampp\php\ext"
PS:进行此更改后不要忘记重新启动apache!
在 php.ini 中:
extension_dir ="c:/wamp64/bin/php/php7.4.9/ext/"
确保 PHP 版本正确。
;extension=mysqli
;
符号 if (!function_exists('mysqli_init') && !extension_loaded('mysqli')) {
echo 'We don\'t have mysqli!!!';
} else {
echo 'mysqli is installed';
}
您所要做的就是转到php.ini
文件并在第 926 行(取决于版本)删除 #. 它应该如下所示:
;extension=ldap
;extension=mbstring
;extension=exif
extension=mysqli
;extension=oci8_12c
;extension=odbc
保存文件并以管理员身份打开控制台 (cmd)。转到路径Apache24 / bin
并输入httpd -k restart
。此命令将重新启动您的服务器。之后,刷新页面,一切正常。
当我尝试我的 PHP Web 应用程序时,它给了我同样的错误。
通过谷歌搜索,我发现我的安装缺少 PHP 服务器的 MySQL 插件。我使用的是 Ubuntu,所以当我尝试 PHP 的 MySQL 插件时,我发现有 2 个,
php-mysql
和php<version>-mysql
我发出命令 -php --version
在我的终端中,我有 php7.4,
我再次发出apt install php7.4-mysql
有效。
此问题也可能是由 .htaccess 文件配置错误引起的。
<?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());
}
}
}
?>