【问题标题】:How does CGI recognizes compiler?CGI如何识别编译器?
【发布时间】:2012-02-28 13:14:15
【问题描述】:

对于这里大多数开明的人来说,这个问题可能看起来很愚蠢。但相信我,我问这个是因为我无法通过正常的谷歌搜索找到答案,因此求助于这里。我知道 CGI 与语言无关。由于我不从事 Web 开发,我只是想知道如果我们有多个 cgi 脚本,其中一个可能是 python 脚本而另一个可能是 C 等等等等,那么 Web 服务器如何知道要查找哪个编译器?

【问题讨论】:

  • 需要注意的是Web服务器通常不能直接执行C代码;他们自己不编译 C。相反,用户必须先编译 C,然后 Web 服务器才能将其用作 CGI 脚本。 (有exceptions to this,但通常情况下C必须手动编译。)

标签: javascript cgi wsgi


【解决方案1】:

CGI 脚本由操作系统运行。

如果文件位于某个目录(通常命名为cgi-bin)并设置了可执行位,Web 服务器通常会假定该文件是 CGI 脚本。

如果网络服务器认为该文件是一个 CGI 脚本,它会forks,设置一些环境变量和其他一些小东西,然后要求操作系统执行它。

操作系统查看是否可以直接执行,如果可以,则执行。否则,它会查找 hashbang 并使用它来执行脚本。

【讨论】:

    【解决方案2】:

    CGI 中没有关于此的内容。每个 Web 服务器的执行方式都不同。例如,Apache 有一个完整的configuration language 用于指定如何处理、过滤和路由到处理程序的请求。相比之下,pythonsimple HTTP server 没有 CGI 脚本的概念,只是调用 python 对象上的方法来服务请求。

    编辑:

    CGI 通常表示RFC 3875。该文档从不要求 Web 服务器将本地文件系统上的文件与 URL 相关联。

    最接近于谈论脚本的是

    3.4.执行

    脚本以系统定义的方式调用。

    这基本上允许服务器在他们喜欢或做任何他们喜欢的服务请求时委托给脚本。

    【讨论】:

    • 这是否意味着 CGI 脚本只是一个纯文本文件,识别正确编译器的责任仅在于 Web 服务器?我什至在想python中的shebang线是否与此有关:D
    • @Jack_of_All_Trades,我添加了一个关于 RFC 3875 以及它为服务器提供了多少纬度的编辑。
    猜你喜欢
    • 1970-01-01
    • 2010-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多