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 log file()でPHPエラーが発生します/var/log/error.log。いくつかの回答を確認しました。致命的なエラー: 'MySQLi' クラスが見つかりません。。しかし、成功しませんでした。

フォーム handler.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-mysqlphp-mysqlはすでに最新バージョン(2:7.3+69)..

ベストアンサー1

どのオペレーティングシステムを使用しているか教えてくれませんでした。しかし、あなたが言及したので、Ubuntuやapt-getDebianのようなものを使っているとします。構成設定は比較的似ています。

確認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が原因である可能性が最も高いですが、エラーが発生しやすい項目でもあります。

おすすめ記事