-1

我最近重新安装了我的 Ubuntu PC(到 12.04)并且不得不重新设置 apache。
local.domain.com 指向 localhost(虚拟主机)。
http://local.domain.com/script.py?query=string
script.py 被修改为 755。
在我的 .htaccess 中,我有:

Options +ExecCGI
AddHandler cgi-script .py

但我得到一个500 : Internal Server Error
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 脚本有什么问题。以前可以用。但由于某种原因,它没有在浏览器中执行。我还能错过什么?

4

2 回答 2

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,我不确定它在哪里。

于 2012-06-30T08:44:48.930 回答
0

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

#!/usr/bin/env python2.6
于 2012-06-30T09:27:26.313 回答