对于这里的大多数开明人士来说,这个问题看起来真的很愚蠢。但请相信我,我问这个是因为我无法通过正常的谷歌搜索找到答案,因此在这里求助。我知道CGI是语言无关的。由于我不在Web开发中,我只是想知道如果我们有多个cgi脚本,其中一个可能是python脚本而其他可能是C等等,web-server如何知道要查找哪个编译器?等等? / p>
答案 0 :(得分:2)
CGI脚本由操作系统运行。
Web服务器通常认为文件是CGI脚本,如果它位于某个目录(通常名为cgi-bin
)并且设置了可执行位。
如果Web服务器认为该文件是CGI脚本,它fork
,设置一些环境变量和其他小东西,然后要求操作系统执行它。
操作系统看到它是否可以直接执行它,如果可以,那么它就可以执行。否则,它会查找hashbang并使用它来执行脚本。
答案 1 :(得分:1)
CGI中没有任何内容。每个Web服务器都以不同方式执行例如,Apache有一整个configuration language,用于指定如何处理,过滤和路由到处理程序的请求。相比之下,python simple HTTP server没有CGI脚本的概念,只是调用python对象上的方法来处理请求。
编辑:
CGI通常意味着RFC 3875。该文档从不要求Web服务器将本地文件系统上的文件与URL相关联。
最接近谈论脚本的位是
<强> 3.4。执行强>
以系统定义的方式调用脚本。
基本上允许服务器委托脚本,如果他们喜欢或做任何他们喜欢的服务请求。