【问题标题】:How do you use the Apache "ScriptInterpreterSource Registry-Strict" directive?您如何使用 Apache“ScriptInterpreterSource Registry-Strict”指令?
【发布时间】:2010-09-27 15:40:51
【问题描述】:

我在 Windows 上运行 Apache Web 服务器,以便处理一些 Perl CGI 脚本。在生产中,这些脚本在 linux 机器上运行,并且在源代码存储库中它们都有 shebangs,例如:#!/usr/bin/perl,但在我的 Windows 机器上,shebangs 将是#!c:\perl\bin\perl.exe,所以我与源代码库有冲突。

输入 Apache ScriptInterpreterSource 指令。

我一直在努力使它工作,基于我可以谷歌。但到目前为止还没有运气。我有:

  1. 将这些内容添加到相应的指令中 AllowOverride None
    选项索引 FollowSymLinks ExecCGI 命令允许,拒绝 允许所有人 ScriptInterpreterSource Registry-Strict

  2. 补充说: AddHandler cgi-script .cgi

  3. 编辑了我的注册表并向

  4. 添加了一个新字符串
HKEY_CLASSES_ROOT\.cgi\Shell\ExecCGI\Command=C:\Perl\bin\perl.exe

现在,我知道 CGI 可以在此服务器上运行,只要它们具有正确的 shebang。

但是当我尝试在没有 shebang 的情况下访问 CGI 时,apache 日志会吐出:

没有为以下文件找到执行 CGI 动词 输入“.cgi”

任何想法、见解,甚至是疯狂的猜测都将不胜感激。

谢谢。

【问题讨论】:

    标签: perl apache cgi


    【解决方案1】:

    听起来 ScriptInterpreterSource 行被忽略了。如果设置为 Registry 或 Registry-Strict,则应忽略 shebang 行并使用注册表。

    此外,Apache 2.2 docs 的注册表项位置略有不同:

    HKEY_CLASSES_ROOT\.cgi\Shell\ExecCGI\Command\(Default) => C:\Perl\bin\perl.exe -wT
    

    【讨论】:

    • 验证这适用于带有 mod_perl 2.0.4 和 perl v5.10.0 的 Apache 2.2.11 (Win32)
    • 这解决了我的问题,但是,我发现使用-T 开关可能会导致旧代码出现问题(例如,它会导致@INC 不考虑相对路径)。
    • 谢谢,这让我发疯了。适用于 Win2008 Apache 2.2.22、ActivePerl 5.12.4
    【解决方案2】:

    这也适用于 Python 脚本。我执行以下操作来修复我的 Apache 安装以忽略脚本中的 shebang 要求。如果没有这个,在当前版本的 Apache 2.4 中需要 shebang - 或者至少在我的版本中。

    # tell apache to use registry - this requried a registry hack
    # to the following: 
    # [HKEY_CLASSES_ROOT\.py\Shell\ExecCGI\Command] = "c:\\python\\python.exe"
    ScriptInterpreterSource Registry-Strict
    

    【讨论】:

      【解决方案3】:

      不要在单独的 CGI 进程中运行您的 perl 代码,而应考虑使用 mod_perl(请参阅 http://perl.apache.org)。

      Mod_perl 效率更高,因为 Perl 代码只加载和解析一次,然后直接在 Apache 进程中运行,无需启动或与其他进程通信。

      【讨论】:

        猜你喜欢
        • 2012-01-30
        • 1970-01-01
        • 2011-04-05
        • 2016-05-03
        • 1970-01-01
        • 1970-01-01
        • 2013-05-30
        • 1970-01-01
        • 2012-07-10
        相关资源
        最近更新 更多