所以在php.ini我設置:PHP error_get_last在收到警告,儘管error_handling = 1
error_reporting = E_ERROR
,我已經寫了一個處理程序:
register_shutdown_function("fatal_handler");
function fatal_handler() {
$errfile = "unknown file";
$errstr = "shutdown";
$errno = E_CORE_ERROR;
$errline = 0;
$error = error_get_last();
if($error !== NULL) {
$errno = $error["type"];
$errfile = $error["file"];
$errline = $error["line"];
$errstr = $error["message"];
if($errno == E_ERROR){
$html = 'some html here';
print($html);
die();
}
}
}
我所做的測試它是在一個腳本中放置超過max_execution_time的睡眠時間。出於某種原因,如果我在加載故意破壞的標籤時在另一個標籤中打開新標籤,也會殺死其他頁面。沒關係,但是當第二頁崩潰時,它給了我一個error_get_last()的警告。但我把error_reporting設置爲1!爲什麼它顯示我一個警告?它不會記錄它,但它會導致我無法捕獲導致白屏的錯誤,這個代碼應該避免的確切事情!
看來E_ERROR從來沒有把它變成這個方法。我從[這個問題]得到了原始代碼(http://stackoverflow.com/questions/277224/how-do-i-catch-a-php-fatal-error)。嗯... – Andrew 2014-09-03 14:43:08
啊哈!但是,如果我結合你的答案,我想我正在做一件事。 – Andrew 2014-09-03 14:58:47
@andrew你是對的我忘記了。到達關機處理程序時,輸出的數據已經發送。所以,如果你是白人篩查,那麼或許警告或錯誤阻止了輸出的發送? – 2014-09-03 17:10:49