我最近重新安装了我的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脚本有什么问题。以前曾经工作过。 但由于某种原因它不在浏览器中执行。 还有什么我可以错过的?
答案 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