我试图围绕一些CGI脚本(我所使用的嵌入式盒子并不像PHP),我有一个关于CGI perl脚本如何与apache及其上的一些HTML站点交互的问题。
基本上,我需要根据文档根目录之外的配置文件加载部分HTML文件。显然,这就是CGI介入的地方。现在,问题是CGI脚本也不应该在你的doc根目录中,所以我不能把脚本放在我的doc根目录中并使它成为HTML。所以,我把我的脚本放在/ var / www / cgi /中,并指向它的apache。
该部分运行良好,它会像它应该的那样触发HTML页面。但是,原始站点在其doc根目录(css文件,java applet,图像等)中有一些资源,我的新CGI制作的HTML无法访问。那么,什么是使HTML页面“自行构建”CGI脚本的最佳方法呢?我在服务器端包含了一些内容,这是一个选项。还可以选择将CGI输出放在<div src="script"></div>
和其他几个中。问题是,这样做的最佳方式是什么?我很感激任何建议。先谢谢!
答案 0 :(得分:2)
好吧,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
文件中,具体取决于您的设置......
答案 1 :(得分:0)
也许我误解了你,但是不会打电话给chdir
来记录你的Perl代码中的root吗?