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
Libérer: 2024-12-19 17:01:13
original
400 Les gens l'ont consulté

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

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

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