현재 위치: > 최신 기사 목록> mysqli :: debug를 사용할 때 로그 파일을 작성할 수없는 이유는 무엇입니까? 권한 문제를 해결하는 방법은 무엇입니까?

mysqli :: debug를 사용할 때 로그 파일을 작성할 수없는 이유는 무엇입니까? 권한 문제를 해결하는 방법은 무엇입니까?

M66 2025-06-12

데이터베이스 디버깅에 PHP의 MySQLI Extension을 사용할 때 MySQLI :: 디버그 기능은 지정된 로그 파일에 디버그 정보를 쓸 수 있으므로 개발자가 문제를 해결할 수 있도록 개발자가 용이하게됩니다. 그러나 많은 개발자들은 mysqli :: debug를 사용할 때 로그 파일을 작성할 수없는 문제를 겪습니다. 이 기사는이 문제의 원인을 자세히 분석하고 허가 문제를 해결하기위한 효과적인 방법을 제공합니다.

1. mysqli :: debug 란 무엇입니까?

mysqli :: debug는 mysqli Extension에서 제공하는 디버깅 도구입니다. 호출 방법은 일반적으로 다음과 같습니다.

 mysqli::debug("d:t:o:/path/to/logfile.log");

그중에서도 매개 변수 형식은 d : t : o : <로그 파일 경로> 이며, 디버그 모드와 로그 출력 위치를 지정하는 데 사용됩니다.

2. 로그 파일을 작성할 수없는 일반적인 이유

mysqli :: debug ( "d : t : o : /var/log/mysqli_debug.log"); 그러나 로그 파일은 기록되지 않으며 주된 이유는 일반적으로 다음을 포함한 권한 문제입니다.

  • 파일 권한이 부족 : PHP 프로세스에서 사용하는 사용자 (예 : www-data, apache 등)는 로그 파일 또는 디렉토리에 대한 쓰기 권한이 없습니다.

  • 디렉토리가 존재하지 않거나 권한 부족 : 지정된 로그 파일 디렉토리가 존재하지 않거나 디렉토리 권한이 파일 작성 및 쓰기를 제한합니다.

  • SELINUX 또는 보안 모듈 제한 : SELINUX, APPARMOR 등 보안 모듈이있는 시스템에서는 지정된 디렉토리에 대한 PHP 액세스가 제한 될 수 있습니다.

  • 경로 오류 : 로그 파일 경로는 잘못 쓰여지거나 잘못된 경로에 의해 철자가 표시되어 올바른 로그 파일 위치를 찾을 수 없습니다.

3. 권한 문제를 확인하고 해결하는 방법은 무엇입니까?

다음은 솔루션을 소개하기위한 예제로 Linux 서버입니다.

3.1 로그 파일 및 디렉토리 권한을 확인하십시오

로그 파일 경로가 /var/log/mysqli_debug.log 라고 가정합니다.

 ls -l /var/log/mysqli_debug.log
ls -ld /var/log/
  • /var/log/mysqli_debug.log 파일이 존재하고 쓰기 가능한 권한이 있는지 확인하거나 /var/log/ directory가 파일 생성을 위해 사용할 수 있는지 확인하십시오.

  • PHP 프로세스의 사용자 신원은 일반적으로 www-data , apache 또는 nginx 이며, PS Aux | Grep Php .

3.2 파일 권한 또는 디렉토리 권한 수정

로그 파일이 존재하지 않으면 먼저 수동으로 만들 수 있습니다.

 sudo touch /var/log/mysqli_debug.log
sudo chown www-data:www-data /var/log/mysqli_debug.log
sudo chmod 664 /var/log/mysqli_debug.log

PHP 프로세스가 디렉토리에서 로그 파일을 작성하려는 경우 다음과 같습니다.

 sudo chown www-data:www-data /var/log/
sudo chmod 775 /var/log/

참고 : 보안 위험을 피하기 위해 권한을 수정할 때 조심해야합니다.

3.3 적절한 로그 파일 경로를 선택하십시오

일반적으로 /var/log/ 디렉토리는 엄격한 권한이있는 시스템 디렉토리에 속합니다. 웹 서버에 프로젝트 디렉토리의 로그 디렉토리와 같은 쓰기 권한이있는 디렉토리에 로그 파일을 디렉토리에 배치하는 것이 좋습니다.

 mysqli::debug("d:t:o:/var/www/html/project/logs/mysqli_debug.log");

디렉토리 및 로그 파일 권한이 올바른지 확인하십시오.

4. 샘플 코드

다음은 mysqli :: debug를 활성화하고 로그 경로를 지정하는 방법을 보여주는 단순화 된 예입니다.

 <?php
// 열려 있는mysqli디버그,로그 쓰기 프로젝트logs목차
mysqli::debug("d:t:o:/var/www/html/project/logs/m66.net_mysqli_debug.log");

// 데이터베이스에 연결하십시오
$mysqli = new mysqli("m66.net", "user", "password", "database");

if ($mysqli->connect_error) {
    die("연결이 실패했습니다: " . $mysqli->connect_error);
}

echo "연결이 성공적으로 연결됩니다";

// 연결을 닫으십시오
$mysqli->close();
?>

/var/www/html/project/logs/ directory가 존재하고 PHP에 쓰기 권한이 있는지 확인하십시오.


5. 요약

  • mysqli :: debug의 가장 일반적인 이유는 로그에 쓰지 못했습니다.

  • 로그 파일 및 디렉토리가 존재하며 PHP 프로세스 사용자에게 쓸 수 있는지 확인하십시오.

  • 허가 관리를 용이하게하기 위해 시스템이 아닌 민감한 디렉토리에 로그 파일을 배치하십시오.

  • 서버에 Selinux와 같은 보안 모듈이있는 경우, 쓰기 권한을 허용하기 위해 추가 구성이 필요합니다.

권한을 합리적으로 구성함으로써 개발자는 MySQLI :: 디버그를 성공적으로 사용하여 디버깅 정보를 녹화하여 데이터베이스 관련 문제를보다 효율적으로 찾아서 해결할 수 있습니다.