2011-09-01 58 views
3

如何更改php錯誤的錯誤輸出?例如,如果它的語法錯誤或服務器端超時,我想回顯一條允許用戶刷新頁面的消息。將php錯誤輸出更改爲鏈接自定義消息

繼承人的代碼,我想補充我的錯誤消息:

$XML->registerXPathNamespace('tree','www.tree.com'); <--occasionally errors here, so I want to output my own error message. 
+1

您將無法捕捉到語法/致命錯誤。 –

回答

7

使用功能set_error_handler定義自定義功能,當有錯誤被調用。然後,您可以決定在該功能中做任何你想做的事情。

如果您只希望特定的持續時間,可以使用restore_error_handler進行恢復。

set_error_handler('yourHandler'); 
... 
$XML->registerXPathNamespace('tree','www.tree.com'); 
... 
restore_error_handler(); 

function yourHandler(int $errno , string $errstr) { 
    //show link to refresh page, whatever. full signature can be found on PHP manual page 
} 
-1

好,快速檢查PHP手冊中registerXPathNamespace表明,它返回TUREFALSE。這對我的解決方案是完美的。

if ([email protected]$XML->registerXPathNamespace('tree','www.tree.com')) { 
    echo '<b>ERROR:</b> Could not register xml path. Please reload the page!'; 
} 

不是這樣,如果它返回FALSE,那麼將顯示消息。而$ XML前面的@將禁用該操作可能導致的原始錯誤。

+0

你仍然需要關閉錯誤報告 – NSjonas

+0

@NSjonas爲什麼?它不會產生錯誤。 –

+0

錯誤是有很好的理由,最好在每個虛擬主機的基礎上,而不是直接在代碼內部打開/關閉。這將使您能夠擁有測試和生產服務器。 – feeela