-PR-
解決済み

CGI内からSSIを実行したいのですが・・・

  • 困ってます
  • 質問No.87974
  • 閲覧数447
  • ありがとう数3
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 57% (44/76)

趣味でPerlによるCGIをやっています。
CGI出力結果と他のページとでヘッダーを共通化したいのですが、CGIファイル内にSSIの#include fileなどを挿入することはできるのでしょうか。
CGIファイルの中に print "<!--#include file="sample.html"-->\n";とするとそのままソースに書きこまれて出力されるだけで実行されないんですけど、、、なにかうまい方法はないでしょうか、お願いします。
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.2
レベル10

ベストアンサー率 64% (73/113)

oneyanさんがおっしゃるとおり、
print "<!--#include file="sample.html"-->\n";
だと「"」のところで文字列が分断されてしまって
「裸の文字列(sample.html)があったよ」
という旨のエラーになりますね(Perl 5.6で確認)。
その場合出力もされないはずなので、多分質問なさるときに
写し間違えたのでしょう。

で、サーバがApacheの場合ですが、残念ながらできません。
(下記オフィシャルサイトのFAQ参照)
セキュリティの問題もあるし、および現在の仕組みではどのように
それを実現すればいいかはっきりしない、1.3の次のバージョン
で解決したい課題のひとつだ、とあります。

そして、代替手段としては「SSIにやってほしいことを、
あなたのスクリプト自体がやってしまうことです」と書いてありますね。

つまり、その個所でsample.htmlをインクルードしたいのなら、
その代わりに

open(SAMPLE, "sample.html");
while (<SAMPLE>) {
print;
}
close(SAMPLE);
と書いてしまうことです。さらに共通化するなら、上記のコードを
sub print_header {
....
}
なんていうサブルーチンにして別ファイルに保存しておき、
CGIでは適宜それをrequireしておいて、必要な個所でprint_headerを
呼び出す、なんて作り方もあり得るでしょうね。

…そこまでする必要ないかもしれませんが。まあ、SSIで
やってることはみんなこの手で、Perlスクリプト側で書いて
しまうのが良いかと。
お礼コメント
shunet

お礼率 57% (44/76)

ありがとうございます!たいへん勉強になりました。
ちなみにサーバーはAPACHEなので、できないんですね、、、
教えていただいたやり方を参考にやっていきたいと思います。
投稿日時 - 2001-06-12 00:03:28
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.1
レベル10

ベストアンサー率 42% (80/187)

直接Perlで、やったことはないので、
勘なのですが、

<!--#include file="sample.html"-->\n

の中の(")を(')、または無記入にしてみてください。

print "の(")をinclude file="の(")で、
閉じてしまっているような気がしました。

違ってましたらすみません。
(MacJPerl or AppleScriptの場合なので)

ただ、これだけですと<!-- -->でコメント化されて
しまうかもしれませんので、
SSIの効くHTMLを作って、頭の部分を丸々、print " "に
入れたほうが良いのでは?と思いました。


  • 回答No.3
レベル8

ベストアンサー率 22% (14/63)

とりあえず、CGIファイルからSSI起動は出来ます。
print "<!--#include file=\"sample.html\"-->\n";
で、行けるはずですが???
私が前やったときは、これでOKでした。
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


専門家があなたの悩みに回答!

-PR-

ピックアップ

-PR-
ページ先頭へ