2011-07-14 86 views
8

我有爲404,403等設置自定義錯誤文檔的apache指令以及500.但是,PHP在遇到致命錯誤時顯示空白頁而不是觸發apache 500響應。如何讓PHP在遇到錯誤時顯示Apache的500錯誤頁面,而不是空白頁面?

我不需要顯示錯誤細節或類似的東西,因爲它們當前在apache error_logs中正確記錄,所以我不認爲它與error_reporting或display_errors有關,它們都設置了正確。

這裏有一些類似的問題關於SO,但還沒有找到答案,做我所需要的。基本上,在類似語法錯誤的情況下,我想看到apache 500錯誤頁面,而不是空白頁面。這不是可以在PHP中捕獲和處理的東西,因爲語法錯誤是無法捕捉的。

這似乎已修補/固定在PHP 5.2.4,如下所示:http://www.mail-archive.com/[email protected]/msg28557.html

但是,我們使用的是PHP 5.2.17和升級是不可行的,在這個時候。有沒有人有任何解決方案/解決方法,可能會在任何PHP語法/致命錯誤的apache中觸發500錯誤?

+0

PHP 5.2.17在* PHP 5.2.4之後發佈。你有沒有檢查你的php.ini? –

+0

嗯不,我沒有。你碰巧知道在php.ini中的什麼選項控制這個? –

+0

@KevinJhangiani,你有沒有找到任何解決方案? –

回答

1

不知道這是否可行:註冊shutdown handler並顯示相應的頁面。 發生致命錯誤時應關閉關閉處理程序。確保您在腳本的頂部註冊了處理程序。

+0

這將適用於很多情況,並且是我經常能夠找到的解決方案,但它不適用於語法錯誤(和其他不可捕捉的錯誤),因爲代碼根本不會執行。我正在尋找一種方式使PHP的行爲類似於Perl,Java等,並提供適當的Apache 500錯誤,而不是一個PHP觸發。 –