Como posso enviar todos os erros php executados em uma página para um e-mail?
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
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()