Maison >développement back-end >tutoriel php >Comment gérer les erreurs PHP fatales (E_ERROR) en PHP 5.2 ?

Comment gérer les erreurs PHP fatales (E_ERROR) en PHP 5.2 ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-19 17:01:13303parcourir

How to Handle Fatal PHP Errors (E_ERROR) in PHP 5.2 ?

Gestion des erreurs fatales PHP (E_ERROR)

Problème :

Si une erreur fatale se produit dans un script PHP, comme l'appel d'une fonction inexistante, l'erreur ne peut pas être détectée à l'aide de set_error_handler() fonction. Comment pouvez-vous gérer ces erreurs critiques ?

Solution :

Pour détecter les erreurs fatales dans PHP 5.2, utilisez la fonction register_shutdown_function() :

register_shutdown_function("fatal_handler");

function fatal_handler() {
    $errfile = "unknown file";
    $errstr = "shutdown";
    $errno = E_CORE_ERROR;
    $errline = 0;

    $error = error_get_last();

    if ($error !== NULL) {
        $errno = $error["type"];
        $errfile = $error["file"];
        $errline = $error["line"];
        $errstr = $error["message"];

        error_mail(format_error($errno, $errstr, $errfile, $errline));
    }
}

Vous devez implémenter les fonctions error_mail() et format_error(), par exemple exemple :

function format_error($errno, $errstr, $errfile, $errline) {
    $trace = print_r(debug_backtrace(false), true);

    $content = "
    <table>
        <thead><th>Item</th><th>Description</th></thead>
        <tbody>
            <tr>
                <th>Error</th>
                <td><pre class="brush:php;toolbar:false">$errstr
Errno
$errno
File $errfile Line $errline Trace
$trace
"; return $content; }

Pour envoyer des e-mails, utilisez Swift Mailer pour définir la fonction error_mail().

Ressources supplémentaires :

  • $php_errormsg
  • Constantes prédéfinies

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn