[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[plamo:21475] Fw: Re: Apache2.0.48+perlCGIについて(Long)
-
From:smt 管理s 齋藤 哲
-
Date:Fri, 5 Dec 2003 10:45:33 +0900 (JST)
- Subject: [plamo:21475] Fw: Re: Apache2.0.48+perlCGIについて(Long)
- From: "smt 管理s 齋藤 哲" <tetsu@xxxxxxxxxxxxxxxxxx>
- Date: Fri, 5 Dec 2003 10:46:05 +0900
齋藤哲です。
#また首を出してしまいました。
Plamo-MLで取り扱うのが適切かわかりませんが、
とりあえず知っていたので。
#Apache関連のMLや掲示板での投稿が吉でしょうか。
| <!--#include virtual="/cgibin/count.cgi" -->で
| an error occurred while processing this directive
| と出てしまいます。
直訳すると、この命令を処理する間に、あるエラーが生じました。
やっかいです。
このエラーはssiで実行時になんらかのエラーが検出されたときに出るので、
デバッグが難しいですよね。
経験から以下のことが推測されます。
#ssiを実行できる環境下であることはわかりました。
・このシステム上で/cgibin/count.cgiが存在しない。
ウェブサーバアカウントホームが、
/home/httpd/html
であると仮定して。
ファイルシステム上で、
/
|-home/
|-httpd/
|-html/
|-cgibin/
|-count.cgi
があるときは、別な問題です。
virtual指定時は、ホームディレクトリがトップになります。
シンボリックリンクが追えない設定時にシンボリックリンク先を参照する場合も
同様といえますが、今回はそれではないようですね。
・スクリプト中に禁止命令が存在する。
たとえば、system(""); や exec "";など。
Include vitualが許す操作は、あくまで単一スクリプト完結の
実行結果のみであったと記憶しています。
外部参照(includeや外部コマンド)は基本的に不可であったはず。
mod_includeの仕様でそうかかれていたような。
もし、上記コマンドをスクリプト内で実行するときは、<!--#exec cmd=""-->がお
勧め。
・権限がない。
ウェブサーバアカウントが実行操作できる場所ではないときにもこの
エラーがでたような。
・mod_includeが有効ではない。
Apacheのmod_includeが有効でないときも同じエラーが出ます。
ダミーのCGIを作ってテストしてみてください。
サンプル
#/usr/bin/perl #適宜変更
print "Content-type: text/html\n\n";
print "TEST OK";
だめなときは、mod_includeの設定を再確認です。
・書式の問題
うまく開始・終了タグが認識されない場合が数多くあります。
<!--#include virtual="/cgibin/count.cgi"-->
のようにはじめのイゲタ(シャープ?)や終わりのダブルクォーテーションには
スペースを入れないようにしましょう。
また、他のスクリプトの終了タグが認識されていないときもあるので、
一度HTML文書自体を掃除してみるのもいかが。
・・・って、いま前メールに添付のコンフィギュレーションをみて気が付きました。
/cgi-bin/ ... Alias
をInclude virtualで指定することは難しいのではないでしょうか。
FollowSymLinks 指定があるので、シンボリックリンクを貼る必要がありますね。
セキュリティ上、危険度が高くなりますが。
ドキュメントルート /usr/local/apache2/html(なのかな?) のなかに、
cgibin/ を /usr/local/apache2/cgi-bin/ に向けてシンボリックリンクとしま
す。
ln -s /usr/local/apache2/cgi-bin/ /usr/local/apache2/html/cgibin/
さらに、ドキュメントルート配下の cgibin/ で Includes FollowSymLinks と指定
する必要もあります。
これから判断すると、ドキュメントルート配下に任意のSSI用フォルダを作って
そこでSSIを実行できるように指定するか、
exec cmdで結果を返す(<!--#exec cmd="perl
/usr/local/apache2/cgi-bin/count.cgi"-->)ように
するしかないのでは?
長文失礼。
齋藤 哲
[検索ページ]
[メール一覧]
Plamo ML 公開システム