我有以下用于处理 CGI 的 HTTP 服务器的最少代码,这些代码来自内胎上的几个示例:
#!/usr/bin/env python
import BaseHTTPServer
import CGIHTTPServer
import cgitb;
cgitb.enable() # Error reporting
server = BaseHTTPServer.HTTPServer
handler = CGIHTTPServer.CGIHTTPRequestHandler
server_address = ("", 8000)
handler.cgi_directories = [""]
httpd = server(server_address, handler)
httpd.serve_forever()
但是,当我执行脚本并尝试使用 http://localhost:8000/test.py
通过 CGI 在同一目录中运行测试脚本时,我看到了脚本的文本而不是执行的结果。
权限设置正确,测试脚本本身不是问题(因为当脚本驻留在 cgi-bin 中时,我可以使用 python -m CGIHTTPServer
正常运行它)。我怀疑问题与默认的 CGI 目录有关。
如何让脚本执行?
最佳答案
我的怀疑是正确的。派生此代码的示例显示了将默认目录设置为服务器脚本所在目录的错误方法。要以这种方式设置默认目录,请使用:
handler.cgi_directories = ["/"]
警告:如果您没有任何类型的防火墙,这会打开潜在的巨大安全漏洞。这只是一个有启发性的例子。只能极其小心地使用。
关于Python CGIHTTPServer 默认目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17618084/