>데이터 베이스 >MySQL 튜토리얼 >PHP에서 mysqli_connect가 실패할 때 내 사용자 정의 오류 메시지가 표시되지 않는 이유는 무엇입니까?

PHP에서 mysqli_connect가 실패할 때 내 사용자 정의 오류 메시지가 표시되지 않는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-30 17:35:14512검색

Why Doesn't My Custom Error Message Show When mysqli_connect Fails in PHP?

mysqli_connect가 실패할 때 PHP가 사용자 정의 오류 메시지를 표시하지 않는 이유는 무엇입니까?

과거에는 PHP가 MySQL 확장을 사용하여 데이터베이스에 연결했는데, 이 경우 수동 오류 처리가 필요했습니다. . 그러나 mysqli가 도입되면서 오류가 자동으로 발생하므로 if (!$conn)과 같은 수동 검사가 필요하지 않습니다.

PHP 8.1 이상에서는 mysqli가 오류에 대한 예외를 발생시킵니다. 따라서 코드의 사용자 정의 오류 메시지는 표시되지 않습니다.

연결 오류 처리 방법

권장되는 접근 방식은 데이터베이스 연결 오류를 처리하기 위해 try-catch 블록에 의존하는 대신 try-catch 블록을 사용하는 것입니다. 수동 확인:

try {
    $conn = mysqli_connect($dbServerName, $dbUsername, $dbPassword, $dbName);
} catch (Exception $e) {
    // Handle the error here
}

사용자에게 오류 메시지를 숨기는 방법

사용자에게 오류 메시지를 숨기려면 다음을 설정하세요. php.ini에서 display_errors를 0으로 설정하거나 ini_set()을 사용하여:

ini_set('display_errors', 0);

사용자 친화적인 오류 페이지를 표시하는 방법

오류 처리기를 사용하여 특정 오류 페이지 대신 일반 오류 페이지를 표시합니다. 오류 메시지:

set_exception_handler(function ($e)
{
    // Log the error
    error_log($e);

    // Set HTTP status code to 500
    http_response_code(500);

    // Check display_errors setting
    if (ini_get('display_errors')) {
        echo $e;
    } else {
        echo "<h1>500 Internal Server Error</h1>An internal server error has occurred. Please try again later.";
    }
});

연결 자격 증명을 테스트하는 방법

별도의 인증서 사용 설치 스크립트 또는 백업 시나리오에 대한 자격 증명을 테스트하기 위해 try-catch를 사용한 연결 테스트:

try {
    $conn = mysqli_connect($dbServerName, $dbUsername, $dbPassword, $dbName);
} catch (Exception $e) {
    // Handle the error
}

연결 자격 증명을 숨기는 방법

PHP 8.2 이상에서는 데이터베이스 비밀번호가 스택에서 숨겨집니다. 추적합니다.

위 내용은 PHP에서 mysqli_connect가 실패할 때 내 사용자 정의 오류 메시지가 표시되지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.