PHP 致命錯誤:未擷取的錯誤:在 /var/www/html/ 中找不到類 ‘mysqli’
我在 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 最有可能是原因,但也最容易出錯。