我正在一个基于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通常会显示的任何错误(但想从常规视图中排除它们并仅显示我的错误页面)
关于如何实现这一目标的建议会很棒。