如何通过PHP

时间:2019-07-17 20:26:21

标签: php debug-backtrace

我正在一个基于PHP的网站上工作,希望每当发生系统错误/异常/等...时,它都会向我发送一封电子邮件。

示例为:

  • 必需/包含的文件丢失
  • 无法连接到后端数据库

我该如何发生?

我正在使用PHP 5.6。我创建了一个单独的文件,其中包含函数unexpected_sys_error()。在我的测试页中,我创建了一个try / catch,它引发了新的异常。

当我使用var_dump debug_backtrace();时显示:

  

“ array(0){}”

在浏览器中

。但是,在电子邮件中只显示“数组”。

PHP代码:

<?PHP 
try{
    throw new Exception('foobar 1-2');
}catch(exception $er){
    include 'system.unavailable.email.php';
    var_dump(debug_backtrace());
    unexpected_sys_error(__NAMESPACE__ . ' \ '. __FUNCTION__ . '\\' . __CLASS__, __METHOD__, "error msg holder", __FILE__, __LINE__, debug_backtrace());
}
?>

system.unavailable.email.php代码:

<?PHP  
    require_once "system.URL.php";

    unexpected_sys_error(__NAMESPACE__ . ' \ '. __FUNCTION__ . '\\' . __CLASS__, __METHOD__, "error msg holder", __FILE__, __LINE__, debug_print_backtrace());

    function unexpected_sys_error($pg_module, $pg_process, $err_message, $err_file, $err_line, $err_backtrace){
        //$pg_module is the page name where the system was working
        //$pg_process is the process where the error occured.

        $err_msg = 'pg_module: ' . $pg_module . PHP_EOL; 
        $err_msg .= 'pg_process: ' . $pg_process . PHP_EOL;
        $err_msg .= 'err_message: ' . $err_message . PHP_EOL;
        $err_msg .= 'err_file: ' . $err_file . PHP_EOL;
        $err_msg .= 'err_line: ' . $err_line . PHP_EOL;
        $err_msg .= 'err_backtrace: ' . $err_backtrace . PHP_EOL;


        mail("user@domain.net","DEMO ALERT EMAIL",$err_msg);
    }
?>

我正在尝试在电子邮件中提供尽可能多的信息,以便快速找到并解决该错误。我想包含PHP通常会显示的任何错误(但想从常规视图中排除它们并仅显示我的错误页面)

关于如何实现这一目标的建议会很棒。

0 个答案:

没有答案