在Windows上,以下注册表设置配置Apache使用的脚本解释器:
HKEY_CLASSES_ROOT\.cgi\Shell\ExecCGI\Command=C:\Perl\bin\perl.exe
这是如何在Linux上完成的?
答案 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。