PHP 致命错误:未捕获错误:在 /var/www/html/ 中找不到类“mysqli”

PHP 致命错误:未捕获错误:在 /var/www/html/ 中找不到类“mysqli”

我正在 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

答案3

确认您的 MySQL 版本应与 PHP 版本兼容

细节:-

首先,确保在 phpinfo 页面中应该有 mysqli 安装信息,如果没有则...... 在此输入图像描述

,安装它,如果您认为您已经将其安装在您的电脑中但无法运行

然后确认您的 MySQL 版本应该与 PHP 版本兼容,例如

首先我将这对用于 MySQL 和 PHP

  • php:7.4-apache & mysql:5.7 (但它不起作用并显示错误 Class 'mysqli' not found)

之后我安装了

  • php:7.2-apache 和 mysql:5.7这对我来说可以

相关内容