Apache用ssi扩展cgi输出

时间:2014-04-30 14:17:07

标签: apache ubuntu debian cgi ssi

我使用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输出的文档。

2 个答案:

答案 0 :(得分:0)

值得检查的一些事情:

  • 在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" -->

我希望有所帮助。

答案 1 :(得分:0)

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

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

将要为cgi解析的输出的cgi脚本重命名为扩展名&#34; .ssicgi&#34;并重命名对原始脚本的任何调用,以便调用过滤后的版本。

如果能为您解决问题,请务必提出并接受答案。