执行python脚本时出错500
我最近重新安装了我的Ubuntu PC(到12.04版),不得不重新安装apache。执行python脚本时出错500,python,apache,cgi,Python,Apache,Cgi,我最近重新安装了我的Ubuntu PC(到12.04版),不得不重新安装apache。 local.domain.com指向本地主机(虚拟主机)。 script.py被chmod'd改为755。 在我的.htaccess中,我有: Options +ExecCGI AddHandler cgi-script .py 但是我得到一个500:内部服务器错误 cat/var/log/apache2/error.domain.com.log不显示任何内容。 如果在命令行中执行python script
local.domain.com指向本地主机(虚拟主机)。
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脚本没有任何错误。它以前是有用的。
但由于某些原因,它不会在浏览器中执行。
我还能错过什么呢?错误就在你面前:
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'
尚未为apache用户设置环境变量
QUERY\u STRING
。你以前是怎么弄到这套的?您可能需要在httpd配置文件中设置它,对于Ubuntu,我不确定它在哪里。Ubuntu 12.04有python 2.7。我的剧本是这样的:
#!/usr/bin/env python2.6
#!/usr/bin/env python2.6 Apache似乎无法将
QUERY\u字符串
环境变量设置为请求中查询字符串的值。我不是Apache用户,因此我没有其他见解,但这些信息可能对您有用。当脚本在命令行上运行时,会发生(可以预见)错误。@IgnacioVazquez Abrams fair point,应该仔细阅读。我仍然建议在本地设置env变量并再次测试脚本,以诊断代码中的其他潜在错误。奇怪的是没有apache错误日志记录。我确实有一个错误。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
#!/usr/bin/env python2.6