"If a worker wants to do his job well, he must first sharpen his tools." - Confucius, "The Analects of Confucius. Lu Linggong"
Front page > Programming > How Can I Catch Fatal Errors in PHP Using `register_shutdown_function()`?

How Can I Catch Fatal Errors in PHP Using `register_shutdown_function()`?

Published on 2025-01-24
Browse:228

How Can I Catch Fatal Errors in PHP Using `register_shutdown_function()`?

Catching PHP Fatal Errors with register_shutdown_function

In PHP, set_error_handler() is useful for handling most errors. However, it cannot capture fatal errors such as those caused by calling non-existent functions. To address this limitation, we can utilize register_shutdown_function.

Using register_shutdown_function

register_shutdown_function() is a function that can be called when PHP shuts down. It takes a user-defined function as a parameter. This function can then capture any unhandled errors that occurred during execution.

register_shutdown_function("fatal_handler");

function fatal_handler() {
    $error = error_get_last();
    if ($error !== NULL) {
        // Extract error information
        $errno = $error["type"];
        $errfile = $error["file"];
        $errline = $error["line"];
        $errstr = $error["message"];
        // Send error details via email using error_mail
        error_mail(format_error($errno, $errstr, $errfile, $errline));
    }
}

Additional Functions

In the above code, we have assumed the existence of two additional functions: error_mail and format_error. Here's how you can define them:

function format_error($errno, $errstr, $errfile, $errline) {
    $trace = print_r(debug_backtrace(false), true);
    $content = "..."; // Format the error message as needed
    return $content;
}
function error_mail($content) {
    // Use Swift Mailer or other mail-sending library to send the error email
}

Additional Notes

  • register_shutdown_function requires PHP 5.2 or later.
  • The $php_errormsg constant provides information about the most recent error.
  • Refer to the predefined constants documentation for a list of error types (e.g., E_ERROR).
Latest tutorial More>

Disclaimer: All resources provided are partly from the Internet. If there is any infringement of your copyright or other rights and interests, please explain the detailed reasons and provide proof of copyright or rights and interests and then send it to the email: [email protected] We will handle it for you as soon as possible.

Copyright© 2022 湘ICP备2022001581号-3