在Linux上的Apache中设置默认脚本解释器

时间:2009-01-21 12:03:49

标签: linux apache cgi

在Windows上,以下注册表设置配置Apache使用的脚本解释器:

HKEY_CLASSES_ROOT\.cgi\Shell\ExecCGI\Command=C:\Perl\bin\perl.exe

这是如何在Linux上完成的?

4 个答案:

答案 0 :(得分:4)

如果您正在谈论CGI脚本处理程序。

它设置在每个CGI脚本的第一行,我经常使用TCL作为Apache中的脚本处理程序,因此添加:

#!/bin/tclsh

在脚本之上添加此行,例如。 test.cgi,只要有人要求,它就会由TCL shell执行。

类似的,您可以将其设置为

表示BASH - #!/ bin / sh

表示PERL - #!/ usr / bin / perl

注意:在您的计算机上,shell二进制可执行文件的路径可能与上面的路径不同。使用以下命令查找它:

#which perl

另外,正如Max建议的那样,请检查Apache是​​否配置为允许CGI脚本 在此 Apache Tutorial Link

中查找相同的详细说明

答案 1 :(得分:4)

为@ Mohit的好答案添加更多信息:

Unix为许多语言使用了许多解释器。其中一些被称为“shell”,但大多数只是系统的另一种计算机语言。事实上,每个文件都是用某种语言编写的,即使它是Java字节码的编译汇编。

文件的前几个字节是“魔术”:它们告诉操作系统如何执行文件。如果前两个字节是'#!',则OS知道该文件需要解释器。然后将第一行到换行符的其余部分用作执行命令。该行的第一个“单词”(以空格分隔的非空格组)被解释为要运行的绝对文件名,所有其他单词作为命令行参数传递给它。最后一个参数是您正在运行的文件的文件名。

因此,例如,如果您将第一行作为

#!/bin/tclsh

在文件/home/user/aaa.tcl

操作系统将使用/home/user/aaa.tcl执行/ bin / tclsh作为命令行参数:

/bin/tclsh /home/user/aaa.tcl

有关更高级的示例,请尝试以下操作:

#! /bin/env perl
中的

执行以下命令:

/bin/env perl /home/user/myperlscript

/ bin / env是一个实用程序,它使用PATH环境变量查找其第一个参数,然后执行它找到的程序,将其余的参数传递给程序。在env的帮助下,您可以使用PATH找到您的口译员。

答案 2 :(得分:1)

ScriptInterpreterSource 是Apache配置设置,仅在Windows上受支持。我在Linux上配置Apache并不是很有经验,但我认为你应该查看Script directive

答案 3 :(得分:-5)

Linux下没有注册表。另外,我怀疑你会在Linux下运行Perl.exe。