错误500执行python脚本

时间:2012-06-30 07:44:02

标签: python apache cgi

我最近重新安装了我的Ubuntu PC(至12.04)&不得不重新设置apache local.domain.com指向localhost(虚拟主机) http://local.domain.com/script.py?query=string
script.py是chmod'd到755 在我的.htaccess中我有:

Options +ExecCGI
AddHandler cgi-script .py

但我得到 500:内部服务器错误 cat /var/log/apache2/error.domain.com.log 什么都没有显示 如果我在命令行中执行python 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脚本有什么问题。以前曾经工作过。 但由于某种原因它不在浏览器中执行。 还有什么我可以错过的?

2 个答案:

答案 0 :(得分: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()

尚未为apache用户设置环境变量QUERY_STRING。你之前是怎么做到这套的?您可能需要在httpd配置文件中设置它,对于Ubuntu,我不确定它在哪里。

答案 1 :(得分:0)

Ubuntu 12.04有python 2.7。我的剧本的shebang线是:

#!/usr/bin/env python2.6