如何将在一个页面上运行的所有php错误发送到电子邮件?

时间:2009-11-09 18:03:28

标签: php php-5.3

基本上我的网站上有一个页面,我希望每次运行脚本时都会通过电子邮件将任何php erorrs,警告等发送给我。

编辑:这必须是放在页面上的代码,而不是对php_ini或类似内容的编辑。

编辑2:这需要捕获所有错误并在脚本末尾的一封电子邮件中发送所有错误

4 个答案:

答案 0 :(得分:7)

您需要设置error handlerregister a shutdown function来进行邮寄。在一个非常简单的例子中,看起来像这样:

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

?>

答案 1 :(得分:2)

如果您尝试捕获代码问题,只需查看您的Web服务器错误日志(假设您有权访问)可能更有效。如果你想要这些摘要形式,你可以写一个cron作业,每天给你发邮件(或其他)。

如果您无权访问错误日志,那么编写错误处理程序并使用set_error_hander()是您最好的选择。我仍然建议让错误处理程序写入日志文件而不是通过电子邮件发送给您。如果您的网站获得任何流量,您的电子邮箱将立即过满。

答案 2 :(得分:1)

您可以为set_error_handler()

创建自定义功能

答案 3 :(得分:1)

您可以做的最好的事情可能是编写错误处理程序,并使用set_error_handler进行设置。但是,这不会处理所有可能的错误。