¿Cómo puedo enviar todos los errores de PHP se ejecutan en una página a un correo electrónico?

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

  •  19-09-2019
  •  | 
  •  

Pregunta

Básicamente tengo una sola página en mi sitio que quiero ningún erorrs php, advertencias, etc para ser enviados a mí en un correo electrónico cada vez que se ejecuta la secuencia de comandos.

Editar:. Este debe ser el código que se coloca en la página, no una edición de php_ini ni nada de eso

Edición 2: esto tiene que coger todos los errores y enviar todos los errores en un correo electrónico al final de la secuencia de comandos

¿Fue útil?

Solución

tendrá que configurar una de error manejador y registrar un función de apagado para hacer el envío. en un ejemplo muy simplista que podría ser algo como esto:

<?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' );

?>

Otros consejos

Si usted está tratando de detectar los problemas con el código, puede ser más eficiente que simplemente mirar sus registros de errores de servidor web (dado que tiene acceso). Si desea que estos en forma de extracto, se puede escribir una tarea programada que le envíe cada día (o lo que sea).

Si usted no tiene acceso a los registros de errores, a continuación, escribir un controlador de errores y el uso de set_error_hander() es su mejor apuesta. Todavía te sugeriría que tiene el gestor de errores de escritura en un archivo de registro en lugar de que un correo electrónico. Si su sitio recibe ningún tráfico en absoluto su buzón de correo electrónico será más de lleno en ningún momento.

Lo mejor que puede hacer es, probablemente, para escribir un controlador de errores, y establecer que con set_error_handler. Sin embargo, esto no va a manejar todos posibles errores.

Puede crear una función personalizada para set_error_handler()

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top