Debian

PHP 致命錯誤:未擷取的錯誤:在 /var/www/html/ 中找不到類 ‘mysqli’

  • January 17, 2021

我在 linux 機器上使用 php(7.3) 和 mysql。但我Fatal error: Uncaught Error: Class 'mysqli' not found in /var/www/html/在 apache2 日誌文件 ( /var/log/error.log) 中收到 PHP 錯誤。我檢查了幾個答案Fatal error: Class ‘MySQLi’ not found。但是沒有用。

表單處理程序.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)..

您還沒有告訴我們您使用的是哪個作業系統。但是既然你已經提到過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 最有可能是原因,但也最容易出錯。

引用自:https://unix.stackexchange.com/questions/525843