2009-12-01 53 views
15

此問題已經以更一般的方式提出。我想在生產服務器上的特定頁面上顯示錯誤消息,但我無法訪問php.ini文件。在生產服務器的特定PHP頁面上啓用所有錯誤和警告的最佳方式是什麼?PHP生產服務器 - 打開錯誤信息

我試過ERROR_REPORTING(E_ALL);

回答

32

要啓用的錯誤,你必須在那些被觸發(例如,在你的PHP腳本的開始)前點用error_reporting

error_reporting(E_ALL); 

並有顯示的錯誤,你應該配置display_errors

ini_set('display_errors', 'On'); 

(這應該在生產服務器上被禁用,這意味着你可能需要啓用它這樣,甚至有配置後d error_reporting


當然,這一切都可以在if塊封裝,以確保只有您可以看到錯誤信息 - 特別是如果你是在現場製作網站這樣做;例如:

if ($_SESSION['is_admin']) 
{ 
    error_reporting(E_ALL); 
    ini_set('display_errors', 'On'); 
} 


而把事情有點漂亮,你也可能需要配置html_errors

ini_set('html_errors', 'On'); 
+0

我喜歡在管理員登錄時打開錯誤的想法,然後每當我檢查站點時,我都能立即發現錯誤而不必打開錯誤。 謝謝 – andrew

+0

不客氣(我有時也使用這個技巧 - 這是一個簡單的方法,比通過日誌文件要容易得多):-)玩得開心! –

+2

我已將此答案添加爲「我如何開啓錯誤報告?」的規範答案。到PHP標記wiki中。 –

1

一種不同的方法一起將註冊一個錯誤處理:的set_error_han dler

這樣,您可以選擇如何處理錯誤:將它們郵寄給管理員,顯示友好的錯誤消息,登錄到文件/ db,...

+0

這聽起來很有趣,發送給我的電子郵件會特別有用,生病做一些閱讀感謝 – andrew

1

另外需要注意的一點是,你可能不僅想要顯示錯誤,而是想將它們記錄到文件/數據庫中。只在生產環境中向用戶顯示錯誤是不夠的;要求他們報告問題會導致您不知道服務器出了什麼問題,直到爲時已晚。在您的基本錯誤和異常處理程序中,確保具有記錄問題的邏輯(儘可能多的調試信息 - 堆棧跟蹤,用戶IP,瀏覽器,應用程序版本等)到永久性存儲中。

4

你真的不應該在生產服務器上顯示它們。最好的方法是創建一些日誌記錄系統。

請注意使其可重複使用!

相關問題