【问题标题】:Apache expanding cgi output with ssiApache 使用 ssi 扩展 cgi 输出
【发布时间】:2014-04-30 14:17:06
【问题描述】:

我使用 Apache 来同时使用 cgi 和 ssi(服务器端包含)来提供网页。我什至在某些情况下都使用它们,即使用 ssi 进一步扩展 cgi 程序的输出以生成最终交付给客户端的 html。

该系统在我的商业网络主机上运行良好,并且在我个人计算机上安装的 Apache 上运行良好。但我最近使用 Debian Apache 2.4.7 升级到了 Ubuntu 14.04 Trusty Tahr(64 位)。 cgi 和 ssi 都可以工作,但只能单独工作。使用 ssi 进一步扩展 cgi 输出的尝试失败,cgi 程序的原始输出被传递给客户端。

我们将不胜感激有关调整系统工作的建议。另一个有用的答案是一个简短的工作示例,不到一百行,该文档在上面的 Ubuntu 配置上使用 ssi 扩展 cgi 输出。

【问题讨论】:

  • 你能粘贴一个不起作用的代码示例或 sn-p 以及你的配置文件吗?在 Ubuntu 上安装 Debian 软件包可能会出现问题,因为 Debian 以更慢、更稳定的速度发布软件,并且可能不包含一些补丁。我还会查看适用软件的发行说明,以防某些内容被弃用或删除。作为最后的手段,如果需要,您可以安装带有桥接网络适配器的虚拟机。

标签: apache ubuntu debian cgi ssi


【解决方案1】:

一些值得检查的事情:

  • 在 Ubuntu 终端中运行 apache2ctl -M 并确保您已启用 cgi_moduleinclude_module
  • 打开您的 Apache 网站配置文件,然后:
    • 确保在Options 指令下,您有ExecCGIIncludes IncludesNOEXEC
    • 检查包含您的 CGI 脚本的目录,您是否设置了 SetHandler cgi-script,或者正在使用 ScriptAlias 指令。

据我所知,不可能在同一个源文件上同时运行 SSI 和 CGI​​。一个可以在运行时预先生成另一个(如预处理器),或者它们可以在运行时将彼此“包含”为单独的文件。

包含 CGI 的 SSI 选项:

  • <!--#include virtual="/cgi-bin/example.cgi?argument=value" -->
  • <!--#exec cgi="/cgi-bin/example.cgi" -->
  • <!--#exec cmd="perl /path/to/perlscript arg1 arg2" -->

我希望那里有帮助。

【讨论】:

    【解决方案2】:

    将此添加到您的 .htaccess 文件中:

    <Files ~ ".ssicgi$">
        Options +SymLinksIfOwnerMatch +Includes
        AddOutputFilter INCLUDES .ssicgi
    </Files>
    

    将您要为其输出解析为 cgi 的 cgi 脚本重命名为扩展名“.ssicgi”,并将对原始脚本的所有调用重命名,以便调用过滤后的版本。

    如果这能解决您的问题,请务必点赞并接受答案。

    【讨论】:

      猜你喜欢
      • 2019-08-23
      • 1970-01-01
      • 2014-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-01
      • 1970-01-01
      • 2013-02-26
      相关资源
      最近更新 更多