如何使用“python-msimplehttpserver 8000”或“python-mcgihttpserver 8000”托管python cgi脚本?

如何使用“python-msimplehttpserver 8000”或“python-mcgihttpserver 8000”托管python cgi脚本?,python,hosting,cgi,simplehttpserver,Python,Hosting,Cgi,Simplehttpserver,当我在shell中运行python-msimplehttpserver 8000或python-mcgihttpserver 8000时,我将当前目录的内容托管到internet 当我浏览到192.xxx.x.xx:8000/cgi_script.py #!/usr/bin/env python print "Content-Type: text/html" print print """\ <html> <body> <h2>Hello World!<

当我在shell中运行
python-msimplehttpserver 8000
python-mcgihttpserver 8000
时,我将当前目录的内容托管到internet

当我浏览到
192.xxx.x.xx:8000/cgi_script.py

#!/usr/bin/env python
print "Content-Type: text/html"
print
print """\
<html>
<body>
<h2>Hello World!</h2>
</body>
</html>
"""
#/usr/bin/env python
打印“内容类型:文本/html”
打印
打印“”\
你好,世界!
"""
但是这个脚本是逐字显示的,而不仅仅是“Hello World!”部分。
顺便说一句,我将cgi_script.py的文件权限以及承载它的文件夹更改为755。

尝试使用
python-m CGIHTTPServer 8000


请注意,您必须将脚本移动到
cgi-bin
htbin
目录才能运行。

因此不允许我评论,因此我将此作为单独的答案添加到rodrigo的答案中


您可以使用另一个参数
cgi_directories
,该参数默认为
['/cgi-bin','/htbin']
。更多信息当我遇到这个问题时,我发现运行
python-mcgihttpserver 8000
命令时,根据您所在的目录,会产生不同的结果。在cgi bin目录中尝试运行该命令时,浏览器继续返回原始脚本代码。当我将cd'ed提高一级并再次运行
python-mcgihttpserver 8000
命令时,我的脚本开始执行

@Bentley4-如果你仍然无法做到, 尝试导入cgi

#!C:\Python34\python.exe-u 导入cgi 打印(“内容类型:文本/html”)


在Python3中,命令行只是

python3-mhttp.server--cgi8000

对于我来说,运行
python-m CGIHTTPServer 8000
命令与cgi-bin处于同一菜单级别,并将cgi_script.py移动到cgi-bin文件夹中。在浏览器类型中,不幸的是,这不会改变任何内容。(我不明白为什么不)。@Bentley4-请查看关于CGI目录的更新答案。我尝试将目录命名为CGI_-bin、htbin甚至CGI-bin。没有一个能正常工作。@Bentley4-我的错!它应该是
cgi-bin
(使用源代码!)。更正。这对我很有效。但是请注意,url应该相应地更改:
http://xxxx:8000/cgi-bin/cgi_script.py
@Bentley4-没那么奇怪,这是一个经典的老限制,避免在不打算使用CGI的情况下运行随机程序。是的:脚本需要驻留在“/CGI-bin”中。您的命令失败,错误为
未知选项:-p
,这很有意义,因为您将
http.server
作为一组短代码选项。它不是这样工作的。相反,它应该是
python-mhttp.server--cgi8000
对于在mac或linux上尝试此功能的用户,请确保具有允许执行该文件的权限。换句话说:
chmod+x cgi bin/cgi_script.py