我正在使用以下代码记录并向我的电子邮件发送错误,但我不知道为什么$content
变量在我检查我的电子邮件时不包含任何内容。这是范围错误吗?或者我做错了什么?
ob_start();
set_error_handler('cs_handler', E_ALL);
//a lot includes and method calls here
function cs_handler($errno, $errstr, $errfile, $errline)
{
$content = ob_get();
mail(...., 'Error Happend: '.$content);
}
答案 0 :(得分:2)
一个问题是,如果您希望每页多个错误正常工作,则需要在刷新缓冲区后再次调用ob_start()
。这可能是问题吗?您是否收到一封包含内容的电子邮件,其他人没有?
您可能遇到的另一个问题是,当您预期3(地址,主题,内容)时,您正在使用2个参数调用mail()
。你可能想要这样的东西:
mail('you@example.com', 'Error Happened', $content);
请注意,以下内容符合预期:
ob_start();
set_error_handler('cs_handler', E_ALL);
echo 'begun';
echo $arr['test']; // This throws a warning, handled by the function below
function cs_handler($errno, $errstr, $errfile, $errline)
{
$content = ob_get_clean();
mail('you@example.com', 'Error Happened', $content);
}