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

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

Barbara Streisand
Barbara Streisand원래의
2024-12-22 19:41:15370검색

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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