在 Windows 上,以下注册表设置配置 Apache 使用的脚本解释器:
HKEY_CLASSES_ROOT\.cgi\Shell\ExecCGI\Command=C:\Perl\bin\perl.exe
这是如何在 Linux 上完成的?
要为@Mohit 的好答案添加更多信息:
Unix 对多种语言使用多种解释器。其中一些被称为“shell”,但大多数只是系统的另一种计算机语言。事实上,每个文件都是用某种语言编写的,即使它是 Java 字节码的编译程序集。
文件的前几个字节是“魔法”:它们告诉操作系统如何执行文件。如果前两个字节是“#!”,则操作系统知道该文件需要解释器。然后将第一行到换行符的其余部分用作要执行的命令。该行的第一个“单词”(空格分隔的非空格组)被解释为要运行的绝对文件名,所有其他单词作为命令行参数传递给它。最后一个参数是您正在运行的文件的文件名。
因此,例如,如果您的第一行为
#!/bin/tclsh
在文件 /home/user/aaa.tcl
操作系统将使用 /home/user/aaa.tcl 作为命令行参数执行 /bin/tclsh:
/bin/tclsh /home/user/aaa.tcl
对于更高级的示例,请尝试以下操作:
#! /bin/env perl
在 /home/user/myperlscript
这将执行以下命令:
/bin/env perl /home/user/myperlscript
/bin/env 是一个实用程序,它使用 PATH 环境变量查找其第一个参数,然后执行它找到的程序,将其余参数传递给程序。在 env 的帮助下,您可以使用 PATH 找到您的解释器。
如果您在谈论 CGI 脚本处理程序。
它设置在每个 CGI 脚本的第一行,我经常使用 TCL 作为 Apache 中的脚本处理程序,因此添加:
#!/bin/tclsh
在脚本顶部添加这一行,例如。test.cgi,只要有人请求它,它就会由 TCL shell 执行。
同样,您可以将其设置为
对于 BASH—— #!/bin/sh
或者
对于 PERL -- #!/usr/bin/perl
注意:在您的机器上,shell 二进制可执行文件的路径可能与上述不同。使用以下命令找到它:
#which perl
此外,正如 Max 所建议的,请检查 Apache 是否配置为允许 CGI 脚本在此Apache 教程链接中找到相同的详细描述
ScriptInterpreterSource是 Apache 配置设置,仅在 Windows 上受支持。我在 Linux 上配置 Apache 的经验并不丰富,但我认为您应该查看Script 指令。
Linux下没有注册表。另外,我怀疑你会让 Perl.exe 在 Linux 下运行。