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
316 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!

source:php.cn
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