【问题标题】:Setting up the default script interpreter in Apache on Linux在 Linux 上的 Apache 中设置默认脚本解释器
【发布时间】:2009-01-21 12:03:48
【问题描述】:

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

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

这是如何在 Linux 上完成的?

【问题讨论】:

  • 您使用的是 Linux,而不是 Windows。这可能是一个好的开始。
  • 为什么这个投票被否决了?
  • 你想在你认为需要设置的地方做什么?

标签: linux apache cgi


【解决方案1】:

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

【讨论】:

【解决方案2】:

如果您在谈论 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

上找到相同的详细说明

【讨论】:

【解决方案3】:

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

【讨论】:

    【解决方案4】:

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

    【讨论】:

    • 实际上有 gconf,它有点像 GNOME 的注册表,但一般来说,你是对的。
    • 那不是 OP 要求的,也没有帮助。
    猜你喜欢
    • 2016-02-23
    • 1970-01-01
    • 2013-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多