2010-08-25 87 views
2

可能重複:
How to make PHP set HTTP status code to 500 automatically in case of any error condition? (including those that cannot be handled by user)顯示500錯誤的任何錯誤

我想配置Apache發送給用戶提供了一個自定義的500頁面時,PHP 500響應腳本引發了一個致命的錯誤。 我現在所擁有的是它將打印錯誤內聯的頁面內容,這對開發很有好處,但不適合生產。

如何配置Apache以向用戶發送包含自定義頁面的500響應?

回答

1

假設你不僅要發送500頭(很簡單),但真正引發Apache的系統中的500錯誤似乎沒有微不足道的解決方案。

this question,它是因爲PHP 5.2.4如果 PHP的默認行爲:

  1. 出現致命錯誤和
  2. 文檔正文爲空(戈登發現changelog的項目here)。

我不確定這種行爲長期有多可靠(即當PHP 6出現時等)。這不是一個廣告的功能。

除此之外,我知道腳本運行後無法激發500。我問了something similar一次404。在那裏提供的答案(重定向到一個預定義的URL,併發送一個500頭)可能是最好的,你可以得到 - 雖然這當然不會被記錄。

0

我會說,如果你想確保它正確地呈現,即使奇怪的事情是防止PHP頁面來呈現

ErrorDocument 500 /some/page.php 

應該做的伎倆,或只是一個不錯的HTML頁面。

爲了觸發你看這個雁錯誤頁面:How to return an HTTP 500 code on any error, no matter what

+0

當PHP腳本引發致命錯誤時,OP正在尋找觸發器500。 – 2010-08-25 22:36:58

0

我想做同樣的事情,但我不認爲這是可能的當前版本的PHP。首先,有一個錯誤500 errors return 200 status。因此,在配置文件中設置ErrorDocument 500將不起作用。另外,即使可以重定向,也無法訪問錯誤信息(用於自定義顯示和日誌記錄)。

儘管觸發錯誤很容易。只需將其添加到PHP文件中:

throw new Exception();