我正在检查一个开源Web应用程序。有一个问题是它使用了error_get_last函数,就像在这段代码中一样
$last_error = error_get_last();
if($last_error['type'] === E_ERROR || $last_error['type'] === E_PARSE) {
include 'error.php';
}
if (ob_get_length()) ob_end_flush();
它让我很烦,因为它似乎缓存旧代码的旧错误,但编辑后的代码没有任何错误。因此它会暂时显示旧错误。有谁知道如何解决这个问题?谢谢你的帮助
编辑:我显示了代码在请求结束时运行的函数__shutdown()
function __shutdown() {
$logger_session = Logger::getSession();
if (($logger_session instanceof Logger_Session) && !$logger_session->isEmpty()) {
Logger::saveSession();
} // if
$last_error = error_get_last();
if($last_error['type'] === E_ERROR || $last_error['type'] === E_PARSE) {
include 'error.php';
}
if (ob_get_length()) ob_end_flush();
} // __shutdown
答案 0 :(得分:1)
函数error_get_last
不会缓存任何内容,它只是像substr
这样的函数以及所有其他函数。如果您看到的内容似乎被缓存,则缓存发生在不同的地方。也许你正在编辑错误的文件(或者你没有真正修复错误),有一个操作码或输出缓存或其他什么。