2012-06-30 92 views
-1

我最近重新安裝了我的Ubuntu PC(到12.04)&不得不重新設置apache。
local.domain.com指向localhost(虛擬主機)。
http://local.domain.com/script.py?query=string
script.py被chmod'd爲755
在我的.htaccess我:錯誤500執行python腳本

Options +ExecCGI 
AddHandler cgi-script .py

但我得到一個500:內部服務器錯誤
cat /var/log/apache2/error.domain.com.log什麼也沒有顯示。
如果我在命令行做蟒蛇script.py我得到:


<!-- The above is a description of an error in a Python program, formatted 
    for a Web browser because the 'cgitb' module was enabled. In case you 
    are not reading this in a Web browser, here is the original traceback: 

Traceback (most recent call last): 
    File "script.py", line 32, in <module> 
    queryHash = hashlib.sha224(os.environ['QUERY_STRING']).hexdigest() 
    File "/usr/lib/python2.7/UserDict.py", line 23, in __getitem__ 
    raise KeyError(key) 
KeyError: 'QUERY_STRING' 

--> 

所以我不圖什麼毛病PY腳本。它曾經工作過。 但由於某種原因,它不在瀏覽器中執行。 我還能錯過什麼?

+1

看起來Apache沒有將'QUERY_STRING'環境變量設置爲請求中查詢字符串的值。我不是阿帕奇人,所以我沒有其他見解,但也許這些信息對你有用。 – cheeken

回答

0

Ubuntu 12.04有python 2.7。我的腳本的shebang行是:

#!/usr/bin/env python2.6
1

的錯誤是正確的有盈的你:

Traceback (most recent call last): 
    File "script.py", line 32, in <module> 
    queryHash = hashlib.sha224(os.environ['QUERY_STRING']).hexdigest() 
    File "/usr/lib/python2.7/UserDict.py", line 23, in __getitem__ 
    raise KeyError(key) 
KeyError: 'QUERY_STRING' 

這說明了無法訪問的關鍵QUERY_STRING。它甚至讓你在發生錯誤的準確代碼行:

File "script.py", line 32 
queryHash = hashlib.sha224(os.environ['QUERY_STRING']).hexdigest() 

環境變量QUERY_STRING尚未設置爲Apache用戶。你之前是如何做到這一點的?您可能需要將其設置在httpd配置文件中,對於Ubuntu,我不確定它在哪裏。

+1

腳本在*命令行運行時發生錯誤(可預測)。 –

+0

@ IgnacioVazquez-Abrams公平點,應該仔細閱讀。我仍然建議在本地設置env變量,然後再次測試腳本以診斷代碼中的其他潛在錯誤。奇怪的是,沒有Apache錯誤日誌記錄。 –

+0

我有一個error.domain.com.log〜。 [Sat Jun 30 14:44:08 2012] [error] [client 127.0.0.1]/usr/bin/env:python2.6:沒有這樣的文件或目錄 [Sat Jun 30 14:44:08 2012] [error ] [client 127.0.0.1]腳本標題過早結束:script.py – anjanesh