我正在 Linux 机器上使用 php(7.3) 和 mysql。但我Fatal error: Uncaught Error: Class 'mysqli' not found in /var/www/html/
在 apache2 日志文件 ( ) 中收到 PHP错误/var/log/error.log
。我检查了几个答案致命错误:未找到“MySQLi”类。但没有成功。
表单处理程序.php
<?php
$conn = new mysqli("localhost", "root", "root", "Users");
// Check connection
if ($conn->connect_errno) {
die("Connection failed: " . $conn->connect_error);
}
else
echo "Connected successfully";
$username = $_POST["username"];
$password = $_POST["password"];
$query = "SELECT * FROM Users WHERE username = " . $username . " AND password =" . $password;
$re = mysqli_query($query);
if (mysqli_num_rows($re) == 0)
{ echo 'Not Logged In'; }
else
{ echo 'Logged In'; }
?>
编辑1
已经执行完以下命令
apt install php-mysql
apt-get install php-mysqlnd
编辑2
我使用以下代码创建了新的 php 文件
<?php
phpinfo(INFO_MODULES);
?>
并在附加模块不显示 mysqli但是当我执行时apt install php-mysql
它显示 php-mysql 已经是最新版本(2:7.3+69)..
答案1
您还没有告诉我们您正在使用哪个操作系统。但既然你已经提到了apt-get
,那么我假设你正在使用类似于 Ubuntu 或 Debian 的东西。它们具有相对相似的配置设置。
检查1
该软件包php-mysql
应该依赖于php7.2-mysql
或类似,因此首先检查是否已安装该软件包,例如:
dpkg --list | grep 'php.*mysql'
ii php-mysql 2:7.2+69ubuntu1 all MySQL module for PHP [default]
ii php7.2-mysql 7.2.19-0ubuntu0.19.04.1 amd64 MySQL module for PHP
请记下您安装的版本,如果不是像我的设置那样的 7.2,您将需要更改以后的检查以匹配您的版本。
检查2
我刚刚查看了我的 Ubuntu 19.04 设置,mysqli 有它自己的共享库,当前安装到属于该php7.2-mysql
软件包并安装到/usr/lib/php/20170718/mysqli.so
.
find /usr/lib/php -name mysqli.so
检查3
为了让 PHP 使用该模块,需要指示它加载它。根据您设置 PHP 运行的方式,您可能需要在不同的位置查找。但对于我来说,在 phpfpm 下运行 PHP 7.2,加载 mysqli 的指令位于:/etc/php/7.2/fpm/conf.d/20-mysqli.ini
。
检查您是否已加载模块:
grep mysqli.so /etc/php/7.2/*/conf.d/*
/etc/php/7.2/cli/conf.d/20-mysqli.ini:extension=mysqli.so
/etc/php/7.2/fpm/conf.d/20-mysqli.ini:extension=mysqli.so
确保您使用 PHP` 的任何方式都配置为加载模块。如果未配置为这样做,那么您应该能够添加回配置:
cd /etc/php/7.2/fpm/conf.d
ln -s ../../mods-available/mysqli.ini 20-mysqli.ini
根据您提供的证据,检查 3 是最有可能的原因,但它也是最容易出错的。
答案2
看来你的 php 安装缺少 mysql 模块。您可以检查它是否安装php -i
在您的 shell 中。如果没有,请尝试安装它。
对于Ubuntu:
apt install php-mysql
对于 CentOS:
yum install php-mysql