> 백엔드 개발 > PHP 튜토리얼 > Register_shutdown_function을 사용하여 치명적인 PHP 오류를 어떻게 잡을 수 있나요?

Register_shutdown_function을 사용하여 치명적인 PHP 오류를 어떻게 잡을 수 있나요?

Barbara Streisand
풀어 주다: 2024-12-22 19:41:15
원래의
316명이 탐색했습니다.

How Can I Catch Fatal PHP Errors Using register_shutdown_function?

종료 함수 등록을 통해 PHP 치명적인 오류 잡기

문제:
set_error_handler()가 처리할 수 있는 동안 대부분의 PHP 오류는 치명적인 오류(E_ERROR)를 포착하지 못합니다. 존재하지 않는 함수를 호출하여 발생하는 오류입니다.

해결책:
PHP 5.2에는 치명적인 오류를 기록할 수 있는 Register_shutdown_function이 도입되었습니다.

register_shutdown_function("fatal_handler");

function fatal_handler() {
    // Capture error information
    $error = error_get_last();
    if ($error) {
        error_mail(format_error(
            $error["type"], $error["message"], $error["file"], $error["line"]
        ));
    }
}
로그인 후 복사

오류 형식을 지정하는 format_error 함수 정보:

function format_error($errno, $errstr, $errfile, $errline) {
    // Generate the error trace
    $trace = print_r(debug_backtrace(false), true);
    
    // Format the error information
    $content = <<<HTML
    <table border="1">
        <thead>
            <th>Item</th>
            <th>Description</th>
        <thead>
        <tbody>
            <tr>
                <td>Error</td>
                <td><pre class="brush:php;toolbar:false">$errstr
Errno
$errno
File $errfile Line $errline Trace
$trace
HTML; return $content; }
로그인 후 복사

메일링 기능을 처리하려면 error_mail 함수를 정의하고 Swift Mailer와 같은 라이브러리 사용을 고려하세요.

추가 리소스:

  • [PHP 오류 처리](https://www.php.net/manual/en/features.error-handling.php)
  • [$php_errormsg](https://www.php.net/manual/en/ Reserved.variables.php#constant.$php_errormsg)

위 내용은 Register_shutdown_function을 사용하여 치명적인 PHP 오류를 어떻게 잡을 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿