1

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

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

这是如何在 Linux 上完成的?

4

4 回答 4

4

要为@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 找到您的解释器。

于 2009-01-21T14:23:53.010 回答
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 教程链接中找到相同的详细描述

于 2009-01-21T12:27:14.087 回答
1

ScriptInterpreterSource是 Apache 配置设置,仅在 Windows 上受支持。我在 Linux 上配置 Apache 的经验并不丰富,但我认为您应该查看Script 指令

于 2009-01-21T12:17:56.820 回答
-5

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

于 2009-01-21T12:06:40.790 回答