2011-02-25 32 views
2

我有一個perl腳本通過Ajax調用。它只是將3個值寫入數據庫。代碼工作正常(值得到寫入成功),但我得到一個「內部服務器錯誤」引發。 Errorlog說「腳本標題的提前結束」。從Perl腳本引發的內部服務器錯誤500 - 但腳本工作正常

應用程序沒有問題 - 它可以根據需要運行幾個月 - 但在測試其他內容時我通過Firebug發現了錯誤。

因此,我開始剝離腳本中的perl,試圖找到問題..並繼續,直到我只剩下兩行.. shebang和exit ..我仍然得到500錯誤。直接從瀏覽器運行腳本會在瀏覽器窗口中顯示500錯誤...從命令提示符處可以正常運行 - 即。沒有在Apache的錯誤日誌。

服務器配置沒有任何問題 - 它有數百個perl腳本,並且已運行多年。

回答

3

如果你正在寫的數據庫,不需要任何發送回客戶機的正確響應狀態204:

print "Status: 204 No Response\n\n"; 

這是因爲它發送一個完整的報頭組,使服務器開心,並告訴客戶端該請求是成功的,並且沒有響應主體進行處理。

+0

謝謝...我現在明白了! :) – Upland 2011-02-25 20:15:47

8

您應該先輸出一個有效的CGI標題。

服務器期望CGI腳本的第一個輸出是CGI頭。通常這可能與print "Content-type: text/plain\n\n";或CGI.pm及其衍生產品print header()一樣簡單。

+0

謝謝..修復它。 – Upland 2011-02-25 14:44:11

+0

但仍不確定爲什麼 – Upland 2011-02-25 14:46:31

相關問題