2009-11-17 84 views
5

我已經將PHP應用程序安裝到共享託管Web服務器上。我得到500 Internal Server Error。我似乎沒有訪問任何日誌文件,所以我想要錯誤頁面暫時提供錯誤的詳細信息。如何顯示PHP內部服務器錯誤的詳細信息?

我知道如何在ASP.Net中做到這一點,但我不熟悉PHP。

回答

16

嘗試:

error_reporting(E_ALL); 
ini_set('display_errors', '1'); 

在文件的頂部。

+3

還檢查文件權限。通常情況下,如果一個文件不可執行,它會拋出500錯誤。 – 2009-11-17 20:42:14

-1

「內部服務器錯誤」不是PHP錯誤(正如名稱所述)。因此,您必須查看您的服務器日誌(您無法訪問它,因爲它看起來),或者你無法從PHP做任何事情。

+2

-1,具體取決於服務器配置和軟件PHP錯誤可能會顯示爲500秒。 – Dereleased 2009-11-17 20:44:02

+0

正確,實際上出於安全原因,許多共享主機將一個php錯誤轉化爲500作爲壓抑的一部分。 – 2009-11-17 20:45:46

+0

對不起,那麼。 – Franz 2009-11-17 21:12:24

2

我懷疑你是從PHP那裏得到這個錯誤。在共享主機上,應用程序的默認.htaccess配置更有可能導致錯誤。

我的猜測是一個mod_rewrite沒有RewriteBase設置。

+0

這完全是可能的,調試時,'.htaccess'通常是我的第一個罪魁禍首,但他從未說過他使用的是Apache。 – Dereleased 2009-11-17 20:49:45

+0

@Dereleased - PHP + SharedHosting,我只是做了數學。如果是IIS,我會感到驚訝。 – 2009-11-17 21:35:34

1

看看在phpinfo();值是否有任何伸出...把它放在某處的代碼,它應該顯示一堆的PHP版本信息

4

如果傑里米·摩根的解決方案不起作用,嘗試創建您自己的日誌文件使用set_error_handler()。通常有關應用程序狀態的信息($ GLOBALS等等)可能是足夠的信息,但PHP將(至少嘗試)傳遞有關錯誤發生的位置以及錯誤類型的各種信息。

此外,請嘗試使用「分而治之」調試方法。從大約一半的文件開始,然後向上展開,如果它仍然崩潰或向下展開(如果它運行的話)。如果您不想刪除您的代碼,可以使用/* comment out */要刪除的代碼,也可以使用__halt_compiler()特殊指令讓PHP忽略文件中的所有剩餘數據。

最後,有一件事讓我瘋狂地試圖修復它,這就是所謂的Byte Order Mark。 PHP在文件開始時評估該BOM,導致它發送輸出,並在嘗試發送標題等時導致問題。可能不是你的問題,但值得擁有的知識。

+1

用於提及BOM。 – chelmertz 2009-11-17 20:57:04

+1

另一個用於BOM的+1。當我第一次出發的時候,這讓我非常適應! – 2009-11-19 08:20:54

相關問題