Edd*_*ett 6 apache legacy cgi web
所以我发现自己处于一种奇怪的情况,我需要在Apache Web服务器下理解旧的skool CGI(简单的CGI)执行.是的,我知道,在实际设置中我们使用Apache模块或FastCGI!但无论如何...
据我所知,Apache CGI脚本看起来像这样(在本例中为perl,但可以是任何东西):
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello, World.";
Run Code Online (Sandbox Code Playgroud)
这是从这里借来的:http://httpd.apache.org/docs/2.2/howto/cgi.html
然后,您将使用以下apache指令来确保perl脚本作为CGI执行:
<Directory ...>
...
Options +ExecCGI
AddHandler cgi-script .pl
</Directory>
Run Code Online (Sandbox Code Playgroud)
这很好用.请注意Apache如何依赖shebang来决定运行脚本的解释器.
但是在lighttpd下,这种方式有所不同.在服务器配置中,我们明确说明要在每个文件扩展名的基础上使用哪个解释器,例如:
cgi.assign = (
".php" => "/usr/local/bin/php",
".pl" => "/usr/bin/perl"
)
Run Code Online (Sandbox Code Playgroud)
如果lighttpd来执行带有shebang的脚本,它似乎被忽略了.精细.
我的问题是,有没有办法在Apache中做这样的事情?我可以指定在服务器配置中使用哪个解释器,以便脚本不需要shebang.据推测,人们没有(当CGI出现的时候回来)将shebang添加到每个PHP文件中,以便应用程序可以在Apache/CGI中运行.
我一直无法在Apache文档中找到答案.也许你不能这样做?
编辑:此外,谁负责发送Content-Type标题.人们真的在CGI时代手动输出了吗?我不记得曾经看过这样做的PHP脚本.
干杯
| 归档时间: |
|
| 查看次数: |
695 次 |
| 最近记录: |