Php

Apache 未顯示 php 錯誤的自定義 500 錯誤頁面

  • March 13, 2015

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您可以在載入頁面期間對日誌文件執行,而不是從站點讀取它們。

引用自:https://serverfault.com/questions/675307