PHP의 MySQLI Extension을 사용하여 데이터베이스 관련 응용 프로그램을 개발할 때 MySQLI :: Debug () 메소드를 사용하여 디버깅 정보를 출력 할 수 있으며, 이는 연결 및 실행 중에 문제를 해결하는 데 매우 도움이됩니다. 그러나 생산 환경에서 디버그 로그를 켜면 성능에 영향을 줄뿐만 아니라 민감한 정보가 유출 될 수 있습니다. 따라서 로그 출력을 디버그하는 방법을 이해해야합니다.
mysqli :: debug () 는 libmysqlclient 라이브러리의 디버깅 함수를 제어하는 데 사용되는 메소드입니다. 호출 된 후 MySQL 클라이언트 라이브러리는 지정된 디버그 정보를 로그 파일에 출력합니다. 예를 들어:
mysqli::debug("d:t:o,/tmp/client.trace");
이렇게하면 디버깅 기능이 가능하고 디버깅 정보를 /tmp/client.thrace 파일로 출력합니다.
디버그 출력을 끄려면 다음과 같은 두 가지 핵심 사항이 있습니다.
가장 직접적인 방법은 mysqli :: debug () 메소드를 호출하지 않는 것 입니다. 테스트 코드에서 사용하는 경우 프로덕션 환경을 배포 할 때 댓글이 있거나 제거되어 있는지 확인하십시오.
공식 PHP 매뉴얼에 따르면 mysqli :: debug ( "")가 호출되면 디버그 구성을 재설정 할 수 있습니다. 로그 파일 내용이 지우지는 않지만 후속 디버그 출력을 중지 할 수 있습니다.
mysqli::debug("");
?? 그러나이 방법이 작동하는지 여부는 기본 MySQL 클라이언트 라이브러리의 구현에 달려 있으며 일부 버전은 여전히 로그 파일에 쓸 수 있습니다.
libmysqlclient를 기반으로 MySQLI Extension을 사용하는 경우 MySQL_DEBUG 환경 변수를 설정하여 디버깅 동작을 제어 할 수도 있습니다.
; php.ini
mysqlnd.debug = ""
또는 PHP를 시작할 때 설정 :
export MYSQL_DEBUG=""
php yourscript.php
이렇게하면 디버깅 구성없이 PHP가 부팅 될 수 있으므로 디버그 출력을 완전히 종료합니다.
<?php
// 아무것도 활성화되지 않습니다 mysqli 디버깅 구성
mysqli::debug("");
// 데이터베이스 연결을 만듭니다
$mysqli = new mysqli("localhost", "username", "password", "database");
// 연결이 성공했는지 확인하십시오
if ($mysqli->connect_error) {
die("연결이 실패했습니다: " . $mysqli->connect_error);
}
// 쿼리를 실행하십시오
$result = $mysqli->query("SELECT * FROM users");
// 처리 결과
while ($row = $result->fetch_assoc()) {
echo "사용자 이름:" . $row["username"] . "<br>";
}
// 연결을 닫으십시오
$mysqli->close();
?>
mysqli :: debug () 출력 디버그 로그를 닫는 핵심은 디버그 함수를 호출 하거나 환경을 지우는 것을 피하는 것입니다. 디버그 로그는 개발 환경에서 문제를 해결할 수 있지만 생산 환경에서는 보안 및 성능 향상을 위해 모든 디버그 출력이 종료되어 있는지 확인하십시오.