Php
Apache 未顯示 php 錯誤的自定義 500 錯誤頁面
Apache 不想顯示我設置的自定義錯誤文件。
在我的虛擬主機中,我有
DocumentRoot /var/www/site/public ... ErrorDocument 500 /500.html
500.html 位於 /var/www/site/public/500.html
為了測試這一點,我剛剛創建了一個損壞的 php 頁面,它確實返回了 500 標題但頁面是空白的。我懷疑這是 php 生成 500 頁面而不是 apache 的結果。那麼如何讓 php 顯示我的自定義 apache 錯誤文件呢?
這是正常行為,因為 PHP 錯誤不被視為 5xx 伺服器錯誤。根據RFC 7231
6.6. 伺服器錯誤 5xx
5xx(伺服器錯誤)類狀態碼表示伺服器知道它出錯或無法執行請求的方法。- -
6.6.1. 500內部伺服器錯誤
500(內部伺服器錯誤)狀態程式碼表示伺服器遇到了阻止它完成請求的意外情況。
PHP 錯誤應始終得到修復,因為它們可能會給您帶來安全問題。出於同樣的原因,處理 php 錯誤的最佳實踐是記錄它們以供程序員查看並隱藏它們對使用者。這種設置將是(以 php.ini 格式):
error_reporting = E_ALL log_errors = On display_errors = Off
這將在 Web 伺服器的錯誤日誌或配置的其他錯誤日誌中記錄錯誤。
tail -f
您可以在載入頁面期間對日誌文件執行,而不是從站點讀取它們。