2012-06-30 93 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