Maison > développement back-end > tutoriel php > Comment puis-je détecter les erreurs PHP fatales à l'aide de register_shutdown_function ?

Comment puis-je détecter les erreurs PHP fatales à l'aide de register_shutdown_function ?

Barbara Streisand
Libérer: 2024-12-22 19:41:15
original
423 Les gens l'ont consulté

How Can I Catch Fatal PHP Errors Using register_shutdown_function?

Détection des erreurs fatales PHP via l'enregistrement d'une fonction d'arrêt

Problème :
Alors que set_error_handler() peut gérer la plupart des erreurs PHP, il ne parvient pas à capturer les erreurs fatales (E_ERROR), telles que celles provoquées par l'appel de nonexistant fonctions.

Solution :
PHP 5.2 introduit la fonction register_shutdown_function, qui permet de journaliser les erreurs fatales :

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"]
        ));
    }
}
Copier après la connexion

Définissez la fonction format_error pour formater l'erreur informations :

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; }
Copier après la connexion

Pour gérer la fonctionnalité de mailing, définissez la fonction error_mail et envisagez d'utiliser une bibliothèque comme Swift Mailer.

Ressources supplémentaires :

  • [Erreur PHP Gestion](https://www.php.net/manual/en/features.error-handling.php)
  • [$php_errormsg](https://www.php.net/manual/en/ réservé.variables.php#constant.$php_errormsg)

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal