>백엔드 개발 >PHP 튜토리얼 >mysqli_connect가 실패할 때 내 사용자 정의 PHP 오류 메시지가 표시되지 않는 이유는 무엇입니까?

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

Barbara Streisand
Barbara Streisand원래의
2024-10-26 14:51:30213검색

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

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

오류 감지 메커니즘 이해< ;/h3>

과거에는 PHP의 mysql 확장 기능을 사용하려면 수동 오류 처리가 필요했습니다. 그러나 PHP 8.1에 도입된 mysqli 확장 기능은 이제 오류 발생 시 자동으로 예외를 트리거하므로 수동으로 오류를 감지할 필요가 없습니다.

사용자 정의 오류 메시지 혼란

귀하의 코드에는 사용자 정의 오류 메시지를 출력하려고 시도하는 if(!$conn) 블록이 포함되어 있습니다. 이 접근 방식은 구식입니다. mysqli는 본질적으로 오류를 발생시키며 자동으로 처리되어야 합니다.

사용자의 오류 메시지 숨기기

사이트 방문자의 오류 메시지를 숨기려면 display_errors 구성을 사용해야 합니다. 옵션. 0으로 설정하면 PHP에서 오류가 표시되는 것을 방지할 수 있습니다. ini_set('display_errors', 0)을 사용하여 php.ini 또는 PHP 코드에서 이 옵션을 설정할 수 있습니다.

사용자에게 친숙한 오류 페이지 표시

사용자에게 시스템 오류를 숨기는 것이 중요하지만 사용자에게 친숙한 오류 페이지를 표시하는 것이 좋습니다. 이는 다음과 같은 오류 처리기를 사용하여 수행할 수 있습니다.

<code class="php">set_exception_handler(function ($e) {
    error_log($e);
    http_response_code(500);
    if (ini_get('display_errors')) {
        echo $e;
    } else {
        echo "<h1>500 Internal Server Error</h1>
              An internal server error has occurred.<br>
              Please try again later.";
    }
});</code>

이 처리기는 오류를 기록하고, HTTP 500 상태 코드를 설정하고, display_errors가 0으로 설정된 경우 일반 오류 메시지를 표시합니다.

연결 오류 처리

특정 시나리오에서는 연결 오류를 명시적으로 처리해야 할 수도 있습니다. 이는 try-catch 블록을 사용하여 수행할 수 있습니다. 그러나 이러한 처리는 특정 오류 시나리오에 대체 조치가 필요한 경우로 제한되어야 합니다.

민감한 정보 숨기기

스택 추적을 수행하려면 스택 추적에서 데이터베이스 비밀번호를 숨기는 PHP 8.2 이상으로 업그레이드하는 것이 좋습니다.

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

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