【问题标题】:SSI not producing output, not giving error eitherSSI 不产生输出,也不给出错误
【发布时间】:2010-06-01 19:05:23
【问题描述】:

在 html 文件中:

<!--#exec cgi="/cgi-bin/test.pl"-->

perl 脚本:

#!/usr/bin/perl
print "Content-Type: text/html\n\n";
print "<input type=\"hidden\" name=\"aname\" value=\"avalue\">\n";
print "<img src=\"/cgi-bin/script.pl\" />";

这不会给我一个“错误处理指令”错误,也不会输出我的 HTML 代替标记。我还要补充一点,ssi 标签被替换为空。

【问题讨论】:

  • 您能以相同的方式运行其他 CGI(使用服务器端包含)吗?你确定你的 httpd 配置正确吗?
  • 是的,我添加了 Options +Includes(不知道需要设置其他任何内容),这很奇怪,它只是将 exec 标记替换为什么都没有。

标签: perl cgi ssi


【解决方案1】:

您确定脚本正在执行吗?如果您将某些内容打印到 STDERR,它会显示在错误日志中吗?

除此之外,我还有几个 cmets:

  1. 我很确定打印 Content-Type 是多余的,您(好吧,无论如何是 Apache)已经通过提供包含 SSI 的 HTML 文件来做到这一点。 reference

  2. exec 真正用于运行像'ls -l' 这样的命令。您应该改用include virtual。它还允许您向 url 添加参数。例如

    <!--#include virtual="/cgi-bin/example.cgi?argument=value" --\>
    
  3. 帮自己一个忙,使用qq[] 而不是双引号。那么你就不必逃避一切了......例如

    print qq[< input type="hidden" name="aname" value="avalue"\b];
    

【讨论】:

  • 如果有人能向我解释为什么我的代码块不能正常工作,那也太酷了......
  • 在有序列表中需要多 4 个空格。
  • 如果您不再次打印标题,则会出现脚本过早结束错误。 (至少在我的服务器上),问题实际上是 SSI 中的“要求”和“使用”语句导致它失败。 (我意识到我没有在 perl 代码中显示这些,我可能应该有)
  • 是的,我想这是有道理的。 SSI 实际上正在执行我想的 http 请求,因此它需要标头。很高兴你明白了。
猜你喜欢
  • 2016-02-01
  • 2013-06-26
  • 1970-01-01
  • 1970-01-01
  • 2012-01-07
  • 2017-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多