Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
HTML中的Perl CGI脚本_Html_Perl_Apache_Cgi - Fatal编程技术网

HTML中的Perl CGI脚本

HTML中的Perl CGI脚本,html,perl,apache,cgi,Html,Perl,Apache,Cgi,我正试图对一些CGI脚本(我所使用的嵌入式框不太喜欢PHP)有所了解,我有一个问题,就是CGI perl脚本如何与apache和它上面的一些HTML站点交互 基本上,我需要根据文档根目录之外的配置文件加载部分HTML文件。显然,这就是CGI介入的地方。现在,问题是CGI脚本也不应该在您的文档根目录中,所以我不能只是将脚本放在我的文档根目录中,然后让它触发HTML。因此,我将脚本放在/var/www/cgi/中,并将apache指向它 这部分运行得很好,并且像它应该的那样激发出一个HTML页面。然

我正试图对一些CGI脚本(我所使用的嵌入式框不太喜欢PHP)有所了解,我有一个问题,就是CGI perl脚本如何与apache和它上面的一些HTML站点交互

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


这部分运行得很好,并且像它应该的那样激发出一个HTML页面。然而,原始站点的文档根中有一些资源(css文件、java小程序、图像等),我的新CGI制作的HTML无法访问这些资源。那么,让HTML页面在CGI脚本的基础上“自行构建”的最佳方法是什么呢?我已经阅读了一些关于服务器端包括的内容,这是一个选项。还可以选择将CGI输出放在
和其他几个文件中。问题是,这样做的最佳方式是什么?如果您有任何建议,我将不胜感激。事先谢谢

也许我误解了你,但是调用
chdir
在你的Perl代码中记录根目录难道不起作用吗?

好吧,Perl对于类似的东西来说可能有些过火了(就像你说的,你可以用X-SSI来做),但听起来您可能希望将Perl代码片段嵌入到其他静态HTML文档中

如果您有
mod_include
,您可以执行以下操作:

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

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

您所说的“无权访问”是什么意思?如果您(例如)输入
,是否会出现错误或其他情况,我认为可以以这种方式引用所有资源,但随后我必须使用这些新的“半绝对”文件路径(仍然是相对于doc root的,但是绝对的)重新生成页面。除此之外,我还必须让我的所有用户都指向CGI文件夹中的某个内容……我想重要的问题是:你需要CGI做什么?我只是读取一个配置文件(使用regex)的一部分,然后将其放入一个applet参数中,php将非常适合它,因为当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" />
   ];