Come posso inviare tutti gli errori PHP eseguito su una pagina a una e-mail?

StackOverflow https://stackoverflow.com/questions/1702693

  •  19-09-2019
  •  | 
  •  

Domanda

Fondamentalmente ho una singola pagina sul mio sito che voglio eventuali erorrs php, avvisi, ecc per essere inviati a me in una e-mail ogni volta che lo script viene eseguito.

Modifica:. Questo deve essere il codice che si trova sulla pagina, non è una modifica al php_ini o qualcosa di simile

Modifica 2: questo ha bisogno di catturare tutti gli errori e inviare tutti gli errori in una e-mail al fine dello script

È stato utile?

Soluzione

è necessario impostare un errore gestore e registrare una funzione di spegnimento per fare il mailing. in un esempio molto semplificato che potrebbe essere simile a questo:

<?php

$__errors = array();
function my_error_handler($code, $message, $file, $line) {
    global $__errors;
    $__errors[] = sprintf('"%s" (%s line %s)', $message, $file, $line);
}
set_error_handler( 'my_error_handler', E_ALL );

function send_error_log() {
    global $__errors;

    if ( count( $__errors ) > 0 ) {
        foreach ( $__errors as $error ) {
            $body . $error . "\n";
        }
        mail( 'to@example.com', 'error log', $body );
    }
}
register_shutdown_function( 'send_error_log' );

?>

Altri suggerimenti

Se si sta cercando di individuare i problemi con il codice, può essere più efficace di guardare solo al vostro server web log di errore (dato che si ha accesso). Se si desidera che questi in forma digest, è possibile scrivere un job cron per posta voi ogni giorno (o qualsiasi altra cosa).

Se non si ha accesso ai log degli errori, quindi scrivendo un gestore di errori e l'utilizzo set_error_hander() è la soluzione migliore. Mi piacerebbe ancora suggerisco avendo la scrittura gestore degli errori in un file di registro, piuttosto che inviare email. Se il vostro sito riceve alcun traffico a tutti la tua casella di posta elettronica sarà troppo pieno in nessun tempo.

Il meglio che puoi fare è probabilmente quello di scrivere un gestore di errori, e l'impostazione che con set_error_handler. Tuttavia, questo non gestirà tutti possibili errori.

È possibile creare una funzione personalizzata per set_error_handler()

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top