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

어떤 운영 체제를 사용하고 있는지 알려주지 않았습니다. 하지만 당신이 언급했으므로 apt-get우분투나 데비안과 같은 것을 사용하고 있다고 가정합니다. 구성 설정이 비교적 유사합니다.

확인 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쉘에 설치되어 있는지 확인할 수 있습니다 . 그렇지 않은 경우 설치해 보십시오.

우분투의 경우:

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 (하지만 작동하지 않고 'mysqli' 클래스를 찾을 수 없다는 오류가 표시됩니다)

그 후 나는 설치했다.

  • php:7.2-apache 및 mysql:5.7그리고이건 나한테는 괜찮아

관련 정보