我已經將PHP應用程序安裝到共享託管Web服務器上。我得到500 Internal Server Error
。我似乎沒有訪問任何日誌文件,所以我想要錯誤頁面暫時提供錯誤的詳細信息。如何顯示PHP內部服務器錯誤的詳細信息?
我知道如何在ASP.Net中做到這一點,但我不熟悉PHP。
我已經將PHP應用程序安裝到共享託管Web服務器上。我得到500 Internal Server Error
。我似乎沒有訪問任何日誌文件,所以我想要錯誤頁面暫時提供錯誤的詳細信息。如何顯示PHP內部服務器錯誤的詳細信息?
我知道如何在ASP.Net中做到這一點,但我不熟悉PHP。
嘗試:
error_reporting(E_ALL);
ini_set('display_errors', '1');
在文件的頂部。
「內部服務器錯誤」不是PHP錯誤(正如名稱所述)。因此,您必須查看您的服務器日誌(您無法訪問它,因爲它看起來),或者你無法從PHP做任何事情。
-1,具體取決於服務器配置和軟件PHP錯誤可能會顯示爲500秒。 – Dereleased 2009-11-17 20:44:02
正確,實際上出於安全原因,許多共享主機將一個php錯誤轉化爲500作爲壓抑的一部分。 – 2009-11-17 20:45:46
對不起,那麼。 – Franz 2009-11-17 21:12:24
我懷疑你是從PHP那裏得到這個錯誤。在共享主機上,應用程序的默認.htaccess配置更有可能導致錯誤。
我的猜測是一個mod_rewrite沒有RewriteBase
設置。
這完全是可能的,調試時,'.htaccess'通常是我的第一個罪魁禍首,但他從未說過他使用的是Apache。 – Dereleased 2009-11-17 20:49:45
@Dereleased - PHP + SharedHosting,我只是做了數學。如果是IIS,我會感到驚訝。 – 2009-11-17 21:35:34
看看在phpinfo();
值是否有任何伸出...把它放在某處的代碼,它應該顯示一堆的PHP版本信息
如果傑里米·摩根的解決方案不起作用,嘗試創建您自己的日誌文件使用set_error_handler()
。通常有關應用程序狀態的信息($ GLOBALS等等)可能是足夠的信息,但PHP將(至少嘗試)傳遞有關錯誤發生的位置以及錯誤類型的各種信息。
此外,請嘗試使用「分而治之」調試方法。從大約一半的文件開始,然後向上展開,如果它仍然崩潰或向下展開(如果它運行的話)。如果您不想刪除您的代碼,可以使用/* comment out */
要刪除的代碼,也可以使用__halt_compiler()
特殊指令讓PHP忽略文件中的所有剩餘數據。
最後,有一件事讓我瘋狂地試圖修復它,這就是所謂的Byte Order Mark。 PHP在文件開始時評估該BOM,導致它發送輸出,並在嘗試發送標題等時導致問題。可能不是你的問題,但值得擁有的知識。
用於提及BOM。 – chelmertz 2009-11-17 20:57:04
另一個用於BOM的+1。當我第一次出發的時候,這讓我非常適應! – 2009-11-19 08:20:54
還檢查文件權限。通常情況下,如果一個文件不可執行,它會拋出500錯誤。 – 2009-11-17 20:42:14