Comment détecter les erreurs fatales PHP (`E_ERROR`) ?
P粉978551081
P粉978551081 2023-08-27 14:42:20
0
1
580
<p>Je peux utiliser <code>set_error_handler()</code> pour détecter la plupart des erreurs PHP, mais cela ne fonctionne pas pour les erreurs fatales (<code>E_ERROR</code>), telles que l'appel d'un non -fonction existante. Existe-t-il un autre moyen de détecter ces erreurs ? </p> <p>J'essaie de résoudre toutes les erreurs en appelant <code>mail()</code> et j'exécute PHP 5.2.3. </p>
P粉978551081
P粉978551081

répondre à tous(1)
P粉576184933

Utilisez register_shutdown_function pour enregistrer les erreurs fatales, cela nécessite PHP 5.2+ :

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 définir la fonction error_mailformat_error. Par exemple :

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

    $content = "
    
表>”;
renvoie $content ;
}


Écrivez la fonction error_mail en utilisant Swift Mailererror_mail.

Voir aussi :

Item Description
Error
$errstr
Numéro d'erreur
$errno
Fichier $Fichier d'erreur
OK $ligne d'erreur
Piste
$trace
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal