我正在使用下面的代码来记录错误并将错误发送到我的电子邮件,但是我不知道为什么当我检查电子邮件时$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);
}
最佳答案
一个问题是,如果要使每页多个错误正常工作,则在刷新缓冲区后,您需要再次调用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);
}
关于php - 为什么ob_get_clean()在函数体中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7245825/