在simplesamlPHP库中有代码
Logger::maskErrors(E_ALL);
$hidden = in_array(
self::$HIDE_FROM_DISCOVERY,
$metadata['EntityAttributes'][self::$ENTITY_CATEGORY],
true
);
Logger::popErrorMask();
因此,他们决定将错误报告设置为0,而不是使用isset($metadata['EntityAttributes'][self::$ENTITY_CATEGORY])
,然后将其还原。问题是,当我将其作为脚本运行时,它可以工作,但是当我将其插入框架时,它仍然会因错误而失败。尽管我在那里放了关卡,但它确实设置为0。
另外,我听说如果您设置了用户定义的错误处理程序函数,那么error_reporting()设置将被完全忽略。但是全局搜索在项目中不返回set_error_handler。
仍然是set_error_handler()
,我没有正确查看供应商文件夹。它在Laravel中起作用的原因:
public function handleError($level, $message, $file = '', $line = 0, $context = [])
{
if (error_reporting() & $level) {
throw new ErrorException($message, 0, $level, $file, $line);
}
}
但是我的框架有这个:
public function handleError($code, $message, $filename = '', $line = 0)
{
throw new \ErrorException($message, $code, 0, $filename, $line);
}