Maison  >  Questions et réponses  >  le corps du texte

Comment détecter les erreurs fatales PHP (`E_ERROR`) ?

<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粉978551081P粉978551081389 Il y a quelques jours525

répondre à tous(1)je répondrai

  • P粉576184933

    P粉5761849332023-08-28 11:12:14

    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 :

    répondre
    0
  • Annulerrépondre
  • ItemDescription
    Error
    $errstr
    Numéro d'erreur
    $errno
    Fichier $Fichier d'erreur
    OK $ligne d'erreur
    Piste
    $trace