Maison > développement back-end > tutoriel php > Comment puis-je détecter et gérer les erreurs PHP fatales (E_ERROR) à l'aide de `register_shutdown_function()` ?

Comment puis-je détecter et gérer les erreurs PHP fatales (E_ERROR) à l'aide de `register_shutdown_function()` ?

DDD
Libérer: 2024-12-29 08:02:17
original
174 Les gens l'ont consulté

How Can I Catch and Handle Fatal PHP Errors (E_ERROR) Using `register_shutdown_function()`?

Attrapage d'erreurs PHP fatales (E_ERROR)

Problème :

Bien que la fonction set_error_handler() soit efficace pour capturer la plupart Erreurs PHP, il ne parvient pas à gérer les erreurs fatales, telles que l'appel de fonctions inexistantes. Cela oblige les développeurs à rechercher des méthodes alternatives pour capturer ces erreurs critiques.

Solution :

PHP 5.2 fournit la fonction register_shutdown_function() qui permet de capturer les erreurs fatales. Voici une implémentation pour envoyer des e-mails d'erreur lorsque vous rencontrez de telles erreurs :

register_shutdown_function("fatal_handler");

function fatal_handler() {
    $error = error_get_last();  // Obtain last error

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

        error_mail(format_error($errno, $errstr, $errfile, $errline));
    }
}
Copier après la connexion

Fonctions de support :

Définissez les fonctions de support nécessaires, telles que format_error et error_mail. La fonction format_error peut renvoyer les informations d'erreur sous forme de tableau :

function format_error($errno, $errstr, $errfile, $errline) {
    $trace = print_r(debug_backtrace(false), true);
    $content = <<<HTML
    <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
HTML; return $content; }
Copier après la connexion

Utilisez la bibliothèque Swift Mailer pour implémenter la fonction error_mail.

Supplémentaire Ressources :

  • [$php_errormsg](https://www.php.net/manual/en/reserved.variables.errormsg.php)
  • [Constantes prédéfinies ](https://www.php.net/manual/en/langue.constants.predéfini.php)

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