此問題已經以更一般的方式提出。我想在生產服務器上的特定頁面上顯示錯誤消息,但我無法訪問php.ini
文件。在生產服務器的特定PHP頁面上啓用所有錯誤和警告的最佳方式是什麼?PHP生產服務器 - 打開錯誤信息
我試過ERROR_REPORTING(E_ALL);
。
此問題已經以更一般的方式提出。我想在生產服務器上的特定頁面上顯示錯誤消息,但我無法訪問php.ini
文件。在生產服務器的特定PHP頁面上啓用所有錯誤和警告的最佳方式是什麼?PHP生產服務器 - 打開錯誤信息
我試過ERROR_REPORTING(E_ALL);
。
要啓用的錯誤,你必須在那些被觸發(例如,在你的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');
一種不同的方法一起將註冊一個錯誤處理:的set_error_han dler
這樣,您可以選擇如何處理錯誤:將它們郵寄給管理員,顯示友好的錯誤消息,登錄到文件/ db,...
這聽起來很有趣,發送給我的電子郵件會特別有用,生病做一些閱讀感謝 – andrew
另外需要注意的一點是,你可能不僅想要顯示錯誤,而是想將它們記錄到文件/數據庫中。只在生產環境中向用戶顯示錯誤是不夠的;要求他們報告問題會導致您不知道服務器出了什麼問題,直到爲時已晚。在您的基本錯誤和異常處理程序中,確保具有記錄問題的邏輯(儘可能多的調試信息 - 堆棧跟蹤,用戶IP,瀏覽器,應用程序版本等)到永久性存儲中。
你真的不應該在生產服務器上顯示它們。最好的方法是創建一些日誌記錄系統。
請注意使其可重複使用!
我喜歡在管理員登錄時打開錯誤的想法,然後每當我檢查站點時,我都能立即發現錯誤而不必打開錯誤。 謝謝 – andrew
不客氣(我有時也使用這個技巧 - 這是一個簡單的方法,比通過日誌文件要容易得多):-)玩得開心! –
我已將此答案添加爲「我如何開啓錯誤報告?」的規範答案。到PHP標記wiki中。 –