Python页面没有呈现

时间:2013-02-04 02:46:46

标签: python cgi

我已经创建了一个工作正常的CGIHTTPServer,问题是无论我做什么,python页面永远不会呈现,源代码总是显示在浏览器中。

pyhttpd.py

#!/usr/bin/python
import CGIHTTPServer
import BaseHTTPServer
class Handler(CGIHTTPServer.CGIHTTPRequestHandler):
    cgi_directories = [""]
PORT = 8080
httpd = BaseHTTPServer.HTTPServer(("", PORT), Handler)
print "serving at port", PORT
httpd.serve_forever()

的cgi-bin / hello.py

#!/usr/bin/python
print 'Content-Type: text/html'
print
print '<html>'
print '<head><title>Hello</title></head>'
print '<body>'
print '<h2>Hello World</h2>'
print '</body></html>'

http://some.ip.address:8080/cgi-bin/hello.py

#!/usr/bin/python
print 'Content-Type: text/html'
print
print '<html>'
print '<head><title>Hello</title></head>'
print '<body>'
print '<h2>Hello World</h2>'
print '</body></html>'

我已将所有文件的权限设置为可执行文件,.html文件呈现正常,甚至将文件移回运行服务器的根文件夹没有区别,我尝试以root用户身份运行以及另一个普通用户,结果完全相同。

尝试使用Google搜索“未呈现的python页面”,但没有找到任何有用的内容!

修改

我也试过运行一个没有覆盖的更简单的服务器,但结果是相同的,从不渲染pything代码:

pyserv.py

#!/usr/bin/python
from BaseHTTPServer import HTTPServer
from CGIHTTPServer import CGIHTTPRequestHandler
serve = HTTPServer(("",80),CGIHTTPRequestHandler)
serve.serve_forever()

1 个答案:

答案 0 :(得分:0)

我相信您遇到此问题是因为您已覆盖cgi_directories

documentation的相关部分是:

“默认为['/cgi-bin', '/htbin'],并描述要视为包含CGI脚本的目录。”

将脚本放在根目录中,或删除cgi_directories的覆盖,并将脚本放在/cgi-bin目录中。

这是一个很好的链接,逐行描述类似的简单设置: https://pointlessprogramming.wordpress.com/2011/02/13/python-cgi-tutorial-1/

<强>更新

根据上页中的comment,似乎设置cgi_directories = [""]会导致禁用 cgi目录功能。而是设置cgi_directories = ["/"],将其设置为当前目录。