cgi脚本文件在浏览器中显示代码而不是运行

时间:2014-09-11 14:52:37

标签: python

我的cgi脚本是:

#!/usr/bin/env python

import cgi

reshtml='''Content-Type:text/html\n
<HTML>
<HEAD>
<title>
Friends CGI demo(dynamic screen)
</title>
</HEAD>
<body>
<h3>Friends list for:<i>%s</i></h3>
Your name is: <b>%s</b>
You have<b>%s</b>friends.
</body>
</HTML>'''

form = cgi.FieldStorage()
who = form['person'].value
howmany = form['howmany'].value
print(reshtml % (who, who, howmany))

这里服务器返回完整的脚本作为文本而不是执行它,根据我的说法它应该只返回reshtml值,浏览器可以理解。 我正在使用python Web服务器并在当前工作目录中成功执行命令C:\ Python32 \ Lib \ http \ server.py。 那么这里出现的问题是什么?

1 个答案:

答案 0 :(得分:0)

该模块的默认http服务器不包含CGI支持。如果你有Python3.4,也许你错过了--cgi切换到http / server:

c:\> python c:\python32\lib\http\server.py --cgi

或更方便:

c:\> python -mhttp.server --cgi

另一方面,如果您使用Python3.2,请尝试以下操作,这应该适用于两种环境:

创建一个名为httpd.py的文件:

import http.server

server_address = ('',8000)
server_class = http.server.HTTPServer
handler_class = http.server.CGIHTTPRequestHandler
httpd = server_class(server_address, handler_class)
httpd.serve_forever()

像这样运行:

c:\> python \httpd.py

它将正确提供可执行的CGI文件,但前提是它们位于./cgi-bin/./htbin/

参考: