Como posso enviar todos os erros php executados em uma página para um e-mail?

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

  •  19-09-2019
  •  | 
  •  

Pergunta

Basicamente, eu tenho uma única página no meu site que eu quero nenhum erorrs php, avisos, etc, para ser enviado para mim em um e-mail toda vez que o script é executado.

Edit:. Este deve ser um código que é colocado na página, não uma edição para php_ini ou qualquer coisa assim

Edit 2: Isso precisa pegar todos os erros e enviar todos os erros em um e-mail no final do script

Foi útil?

Solução

você precisa configurar uma href="http://php.net/set_error_handler" rel="nofollow erro manipulador e registrar um função de desligamento para fazer o mailing. em um exemplo muito simplificado que poderia ser algo como isto:

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

?>

Outras dicas

Se você está tentando pegar problemas com o código, pode ser mais eficiente para olhar apenas em seus logs de erro webserver (dado que você tem acesso). Se você quer estes na forma resumida, você pode escrever um trabalho cron para enviá-lo a cada dia (ou qualquer outro).

Se você não tem acesso aos logs de erro, em seguida, escrever um manipulador de erro e usando set_error_hander() é sua melhor aposta. Eu ainda sugiro ter a gravação manipulador de erro em um arquivo de log em vez de enviando-lhe. Se o seu site recebe todo o tráfego em toda a sua caixa de e-mail estará totalmente completa em nenhum momento.

O melhor que você pode fazer é provavelmente a escrever um manipulador de erro, e configuração que com set_error_handler. No entanto, isso não vai lidar com todas possíveis erros.

Você pode criar uma função personalizada para set_error_handler()

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top