2014-11-21 182 views
2

我有一個Ubuntu虛擬服務器,我託管我的PHP網站的最新版本的Plesk 12和PHP 5.5。有時(我相信當我一個接一個打開頁面時),我得到一個內部服務器錯誤信息。FastCGI服務器錯誤500

當我刷新頁面時,網站立即再次正常,但有時在大約一分鐘後錯誤信息消失後來。

這是我得到的網頁上:

內部服務器錯誤500

服務器遇到一個內部錯誤或配置錯誤, 無法完成您的請求。

錯誤日誌:

[fcgid:警告] [PID 26583](104)通過對等連接復位:客戶端(IP 地址)] mod_fcgid:從FastCGI的服務器錯誤讀取數據,引薦: (URL這裏)

[芯:錯誤] [PID 26583] [客戶端(IP地址)]腳本輸出 頭之前結束:index.php的,引用者:(相同的URL這裏)

回答

1

鑑於你的錯誤日誌,它看起來像索引頁想要寫一個HTTP頭(帶有header()或set_cookie或類似的)後,它打印定期輸出,在你的情況下可能是一個警告消息,由於連接中斷。

我想要做的是在php.ini中禁用頁面中的所有錯誤輸出,但仍然記錄錯誤。

PHP只能輸出HTTP報頭字段之前的頁面上的任何其他常規輸出,警告和錯誤消息包括在內。因此,如果您只將所有錯誤和警告指向日誌文件,並且將打印在頁面上,那麼在HTTP頭之前將不會有輸出,並且應該可以正常工作。

+0

感謝您的回答。 我確實已經在一些頁面上聲明瞭頭後有幾個header()函數,通常對於ob_start()可以正常工作。 我禁用了所有錯誤輸出,但內部服務器錯誤仍然存​​在。 – Phantax 2014-11-24 15:22:18

+0

好吧,下一個調試步驟將增加錯誤日誌級別並將所有日誌輸出打印到日誌文件。我假定日誌輸出中的第二行不會再出現失效錯誤輸出。所以現在你需要弄清楚在哪一點PHP腳本死亡。您可以通過向腳本添加error_log語句來完成此操作。請嘗試增加pho.ini中每個腳本允許的最大內存消耗量。這是PHP中常見的問題來源(儘管這通常會被記錄下來)。 – 2014-11-24 17:48:42

+0

對於遲到的回覆感到抱歉。不幸的是,我不能完全按照錯誤記錄步驟進行,因爲我不是真正的專業人員。如果這是正確的,我將error_reporting更改爲〜E_ALL。 memory_limit目前在256M。 (我應該增加嗎?)。但有一件事我發現:我剛剛創建了一個只包含一個html鏈接的新php文件,並且在一個新標籤中快速打開這個相同的文件,並得到相同的內部服務器錯誤。但是很少見(雖然文件很小?)。也許失敗是不是在腳本,但在服務器? – Phantax 2014-11-29 14:30:25

0

如果任何 PHP腳本導致錯誤,請嘗試以下步驟:

  1. 開關從FastCGI的到CGI
  2. 觸發另一個請求出錯
  3. 檢查error_log實際的錯誤,解決這些問題相應地
  4. 切換回FastCGI

如果像apache.conf這樣的配置文件在它們中有錯誤它將不會出現在啓動FastCGI的錯誤日誌中。