【发布时间】:2011-12-26 20:02:36
【问题描述】:
我想设置一个本地 CGI 服务器,它将任何 *.py 文件视为 cgi 脚本并执行它。但是使用CGIHTTPServer.CGIHTTPRequestHandler 只会执行包含在cgi_directories 属性中的文件。
如何实现任何 Python 脚本都作为 cgi-script 执行?
【问题讨论】:
我想设置一个本地 CGI 服务器,它将任何 *.py 文件视为 cgi 脚本并执行它。但是使用CGIHTTPServer.CGIHTTPRequestHandler 只会执行包含在cgi_directories 属性中的文件。
【问题讨论】:
尝试替换 CGIHTTPServer.CGIHTTPRequestHandler.is_cgi 函数,风险自负:
import CGIHTTPServer
def is_cgi(self):
if self.path.endswith('.py'):
self.cgi_info = CGIHTTPServer._url_collapse_path_split(self.path)
return True
return False
CGIHTTPServer.CGIHTTPRequestHandler.is_cgi = is_cgi
【讨论】:
看着documentation,我想你可能正在寻找这个:
cgi_directories
这默认为 ['/cgi-bin', '/htbin'] 并描述被视为包含 CGI 脚本的目录。
因此,将cgi_directories 设置为您需要的任何值,您将能够在与以前的任何名称都不匹配的目录中提供脚本。
或者,我想说您也可以在预期目录之一中的脚本链接处添加对该脚本的访问权限。
【讨论】: