【问题标题】:How to host python cgi script with `python -m SimpleHTTPServer 8000` or `python -m CGIHTTPServer 8000`?如何使用`python -m SimpleHTTPServer 8000`或`python -m CGIHTTPServer 8000`托管python cgi脚本?
【发布时间】:2012-05-10 21:34:51
【问题描述】:

当我在 shell 中运行 python -m SimpleHTTPServer 8000python -m CGIHTTPServer 8000 时,我将当前目录的内容托管到 Internet。

当我浏览到192.xxx.x.xx:8000/cgi_script.py时,我想在命令行中使用上述命令使以下cgi_script.py正常工作

#!/usr/bin/env python
print "Content-Type: text/html"
print
print """\
<html>
<body>
<h2>Hello World!</h2>
</body>
</html>
"""

但是这个脚本是按字面意思显示的,而不仅仅是“Hello World!”部分。 顺便说一句,我将 cgi_script.py 以及我托管它的文件夹的文件权限更改为 755。

【问题讨论】:

  • 对于在 mac 或 linux 上尝试此操作的人,请确保具有允许执行文件的权限。换句话说:chmod +x cgi-bin/cgi_script.py

标签: python hosting cgi simplehttpserver


【解决方案1】:

在 Python3 中,命令行很简单

python3 -m http.server --cgi 8000

【讨论】:

  • 是的:脚本需要驻留在'/cgi-bin'中
  • 您的命令失败并出现错误Unknown option: -p,这是有道理的,因为您将http.server 视为一组短选项。它不是这样工作的。相反,它应该是python -m http.server --cgi 8000
【解决方案2】:

这对我有用,运行 python -m CGIHTTPServer 8000 命令与 cgi-bin 相同的菜单级别,并将 cgi_script.py 移动到 cgi-bin 文件夹中。在浏览器中输入 http://localhost:8000/cgi-bin/cgi_script.py

【讨论】:

    【解决方案3】:

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

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

    HTH

    【讨论】:

      【解决方案4】:

      当我遇到这个问题时,我发现根据您在运行python -m CGIHTTPServer 8000 命令时所在的目录会产生不同的结果。在 cgi-bin 目录中尝试运行命令时,浏览器继续返回原始脚本代码。一旦我 cd'ed 更高一级并再次运行python -m CGIHTTPServer 8000 命令,我的脚本就开始执行。

      【讨论】:

        【解决方案5】:

        所以不允许我发表评论,所以我将此作为单独的答案添加到罗德里戈的答案中。

        您可以使用另一个参数cgi_directories,默认为['/cgi-bin', '/htbin']。更多信息here

        【讨论】:

          【解决方案6】:

          试试python -m CGIHTTPServer 8000

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

          【讨论】:

          • 不幸的是,这并没有改变任何东西。 (我不明白为什么不)。
          • @Bentley4 - 请查看有关 CGI 目录的更新答案。
          • 我尝试将目录命名为 cgi_bin、htbin 甚至 cgi-bin。没有一个能正常工作。
          • @Bentley4 - 我的错!它应该是cgi-bin(使用源代码!)。已更正。它对我有用。但请注意,网址应相应更改:http://xxxx:8000/cgi-bin/cgi_script.py.
          • @Bentley4 - 没那么奇怪,这是一个经典的旧限制,即避免像 CGI 一样运行随机程序,而这些程序不应该以这种方式使用。
          猜你喜欢
          • 2020-04-21
          • 1970-01-01
          • 2011-05-19
          • 1970-01-01
          • 1970-01-01
          • 2011-12-18
          • 2017-02-04
          • 1970-01-01
          相关资源
          最近更新 更多