【问题标题】:Perl CGI Scripts in HTMLHTML 中的 Perl CGI 脚本
【发布时间】:2012-01-19 21:28:02
【问题描述】:

我正试图围绕一些 CGI 脚本(我所使用的嵌入式框不太像 PHP),并且我有一个关于 CGI perl 脚本如何与 apache 及其上的一些 HTML 站点交互的问题。

基本上,我需要根据文档根目录之外的配置文件加载部分 HTML 文件。显然,这就是 CGI 介入的地方。现在,问题是 CGI 脚本也不应该在您的 doc 根目录中,所以我不能只是将脚本放在我的 doc 根目录中并让它触发 HTML。因此,我将脚本放在 /var/www/cgi/ 中,并将 apache 指向它。

这部分运行得很好,它会像它应该的那样触发一个 HTML 页面。但是,原始站点的文档根目录中有一些资源(css 文件、java 小程序、图像等),而我的新 CGI 制作的 HTML 无法访问这些资源。那么,使 HTML 页面“构建”CGI 脚本的最佳方法是什么?我已经阅读了一些关于服务器端包含的内容,这是一种选择。还可以选择将 CGI 输出放在 <div src="script"></div> 和其他几个中。问题是,这样做的最佳方法是什么?我会很感激任何建议。先谢谢了!

【问题讨论】:

  • “无权访问”是什么意思?如果您(例如)输入<img src="/foo.png" />,您会收到错误消息还是什么?
  • 好吧,我想以这种方式引用所有资源是可能的,但是我必须用这些新的“半绝对”文件路径重新制作页面(仍然相对于文档根目录,但绝对不是)。此外,我必须将所有用户指向 CGI 文件夹中的某些内容...
  • 我想重要的问题是:你需要 CGI 做什么?
  • 我只是在读取一个配置文件(使用正则表达式)并将其放入小程序参数中,php 将是完美的哈哈

标签: html perl apache cgi


【解决方案1】:

好吧,Perl 对于这样的事情可能有点矫枉过正(就像你说的,你可以用 X-SSI 做到这一点),但听起来你可能想要将 Perl 代码片段嵌入到你原本是静态的 HTML 中文件?

如果你有mod_include,你可以这样做:

   <applet … >
     <!--#exec cgi="/cgi-bin/readconfig.cgi" -->
   </applet>

然后让readconfig.cgi 写出类似

的片段
   #!/usr/bin/perl -WT

   print "Content-Type: text/html\n\n";

   open my $config, '<', '/foo/bar/baz.qux'
       or die "<!-- can't read baz.qux: $! -->";

   my $line = <$config> until $line =~ /interesting: ([a-z]+[0-9]+)/;
   my $interesting = $1;
   print qq[
          <param value="$interesting" />
   ];

您需要启用 Options +includes 来解析 X-SSI,可能通过将其放入 .htaccess 文件中,具体取决于您的设置...

【讨论】:

    【解决方案2】:

    也许我误解了你,但是调用chdir 来记录你的 Perl 代码中的 root 不就行了吗?

    【讨论】:

    • 否,因为客户端浏览器仍会在 cgi 文件夹中查找资源,但实际上没有资源。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    • 2015-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多