2011-12-14 22 views
2

私はいくつかのCGIスクリプト(私が使っている埋め込みボックスはPHPがあまり好きではありません)を頭に入れようとしていますが、CGI perlスクリプトがApacheといくつかのHTMLその上のサイト。HTMLのPerl CGIスクリプト

基本的には、ドキュメントルート以外の設定ファイルに基づいて読み込むHTMLファイルの一部が必要です。明らかに、これはCGIが入るところです。問題は、CGIスクリプトがドキュメントのルートにあるべきではないということです。そのため、私のドキュメントルートにスクリプトを置き、HTMLを作成するだけではありません。だから私は/ var/www/cgi /にスクリプトを書いて、それにapacheを指摘しました。

この部分はうまく動作し、HTMLページを起動する必要があります。しかし、元のサイトにはdocルート(cssファイル、Javaアプレット、イメージなど)にいくつかのリソースがあり、新しいCGI製HTMLにはアクセスできません。だから、HTMLページをCGIスクリプトから "ビルド"させる最良の方法は何でしょうか?私は1つのオプションであるServer side includesでいくつかのことを読んだ。 <div src="script"></div>にCGI出力を入れるオプションもあります。問題は、これを行う最善の方法は何か?私は何かアドバイスをいただければ幸いです。あらかじめありがとう!

+0

「アクセスできません」とはどういう意味ですか?あなたが「」に入れた場合など、エラーが発生しますか? – BRFennPocock

+0

まあ、私は、そのような方法ですべてのリソースを参照することは可能だろうと思うが、私はこれらの新しい "セミアブソリュート"ファイルパス(まだdoc rootに相対的ですが、それ以外の場合は絶対)でページをリメイクする必要があります。さらに、CGIフォルダ内のすべてのユーザーを指し示す必要があります。 – SuperTron

+0

重要な質問は次のようなものです:CGIには何が必要ですか? – BRFennPocock

答えて

2

まあまあ、Perlはそういうもののために余計かもしれませんが(あなたが言ったように、X-SSIで行うことができます)、Perlコードのフラグメントを静的なものに埋め込むことが望ましいかもしれませんHTML文書ですか?あなたはmod_includeを持っている場合は

、あなたのような何かを行うことができます。

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

とのちょうどreadconfig.cgiあなたはX-SSIを解析するOptions +includesを有効にする必要があります

#!/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" /> 
    ]; 

のようなフラグメントを書き出す必要がありあなたの設定に応じて、.htaccessファイルにドロップすることによって可能性があります。

0

私はあなたを誤解しているかもしれませんが、chdirを呼び出すと、Perlコードのルートを文書化するのは難しいのですか?

+0

いいえ、クライアントブラウザは依然としてcgiフォルダ内でリソースを探しますそこにはありません。 – SuperTron

関連する問題