請告訴我,如果這是正確的。在我的錯誤處理程序中,我需要能夠檢測何時使用@ error-control操作符來抑制錯誤,因爲一些外部庫(可悲地)會使用它。應該繼續執行腳本,就像不使用自定義錯誤處理程序一樣。檢測錯誤控制運算符
當使用符號時,PHP臨時將error_reporting設置爲0.因此,在腳本開始時,我們將error_reporting設置爲任何值,但是零 - 我們現在可以執行一些美麗的IF/ELSE魔術。爲了避免在前端顯示任何錯誤,我們還將display_errors設置爲0,這將覆蓋error_reporting(但我們仍然可以使用它的值作爲魔術)。
<?php
ini_set('display_errors',0);
error_reporting(E_ALL);
function error_handler($errno, $errstr, $errfile, $errline)
{
if (error_reporting()===0) return;
else die();
}
set_error_handler('error_handler');
//This issues an error, but the handler will return and execution continues.
//Remove the at-sign and the script will die()
@file();
echo 'Execution continued, hooray.';
?>
所以..這裏沒有漁獲物嗎?除了那個外部庫覆蓋我的錯誤處理..(有關於此的任何提示嗎?)
+1。這個確認是我所需要的。尖叫聲的延伸看起來很有用,可能會檢查到。不過在今天的情況下,我只想讓外部庫能夠做到這一點 - 就好像我的應用程序不在那裏一樣。 – 2009-08-16 10:27:51