2013-10-03 25 views
7

我似乎無法讓python模塊cgitb在瀏覽器中輸出堆棧跟蹤。我在shell環境中沒有問題。我使用python 2.6運行Centos 6。python cgitb不能通過瀏覽器運行

下面是一個例子簡單的代碼,我使用:

import cgitb; cgitb.enable() 

print "Content-type: text/html" 
print 

print 1/0 

我得到一個內部服務器錯誤,而不是打印的詳細報告。我嘗試了不同的錯誤類型,不同的瀏覽器等。

當我沒有錯誤,當然python工作正常。它會在shell中打印錯誤。 cgitb的目的是打印錯誤,而不是在瀏覽器中返回「內部服務器錯誤」以查找大多數錯誤異常。基本上我只是想讓cgitb在瀏覽器環境中工作。

有什麼建議嗎?

回答

-1

我只想引用docs

確保你的腳本是「其他」讀取和執行; Unix文件模式應該是0755八進制(使用chmod 0755 filename)。

確保腳本的第一行包含#!開始在隨後的Python解釋器的路徑名第1列,例如:

#!/usr/local/bin/python

+0

OP說,沒有錯誤,腳本運行良好。所以它肯定不是執行CGI的問題。請評論你的答案,以防萬一我弄錯了,因爲我也需要讓這個運行,並且cgitb似乎確實抓住了我的問題並採取行動。 – Chris

+0

讓我不同意你的看法。在shell中,您可以通過在文件名前面傳遞'python'來運行該文件。在CGI中,你必須確保文件本身是可執行的,因爲CGI引擎可能不知道如何運行它。你必須在文件的開頭放置shebang-value。 – baldr

+0

同意。但是我發現答案讓我認爲這是解決問題的正確方法。特別是「正義」。我認爲它應該說「請確保你已經涵蓋了CGI基礎知識」。我意識到,我認爲在OP的情況下,實際上*有*不同的解決方案。 – Chris

0

好,我知道我的問題固定的, OP給我帶來了:即使是cgitb默認會輸出HTML,它不會輸出標題!和Apache不喜歡這一點,可能會給你像一些愚蠢的錯誤:

<...blablabla>: Response header name '<!--' contains invalid characters, aborting request

它表示,阿帕奇還在通過頭的工作方式時,它已經遇到了一些HTML。在錯誤被觸發之前查看OP打印的內容。這是一個標題,你需要。包括空行。