[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[plamo:21488] Re: Apache2.0.48+perlCGIについて



smt 管理s 齋藤 哲 <tetsu@smt.city.sendai.jp> wrote:

齋藤哲さん、有難うございます。
なかなか、この様な情報を本や検索で見つけ出すのは
苦労する部分を、解説下さいまして有難うございます。

> #Apache関連のMLや掲示板での投稿が吉でしょうか。
ご指摘、ごもっともと思います。
私は、このOS、MLがとても勉強になり、
自分のやりたかったことが、実現できるお気に入りの場です。
Plamoを触っている時間が一番幸せです。

> | <!--#include virtual="/cgibin/count.cgi" -->で
/cgibin/は/cgi-bin/の誤りでした。

> | an error occurred while processing this directive
> このエラーはssiで実行時になんらかのエラーが検出されたときに出るので、
> デバッグが難しいですよね。
> 経験から以下のことが推測されます。
> ・このシステム上で/cgibin/count.cgiが存在しない。
>  ウェブサーバアカウントホームが、
>  /home/httpd/html
>  であると仮定して。
>  ファイルシステム上で、
>  /
>  |-home/
>    |-httpd/
>      |-html/
>        |-cgibin/
>          |-count.cgi
>  があるときは、別な問題です。
>  virtual指定時は、ホームディレクトリがトップになります。
知りませんでした。それでエラーになっています。
/usr/local/apache2/cgi-bin/count.shtml
としてテストしていました。

>  シンボリックリンクが追えない設定時にシンボリックリンク先を参照する場合も
>  同様といえますが、今回はそれではないようですね。

> ・スクリプト中に禁止命令が存在する。
>  たとえば、system(""); や exec "";など。
>  Include vitualが許す操作は、あくまで単一スクリプト完結の
>  実行結果のみであったと記憶しています。
>  外部参照(includeや外部コマンド)は基本的に不可であったはず。
>  mod_includeの仕様でそうかかれていたような。
>  もし、上記コマンドをスクリプト内で実行するときは、<!--#exec cmd=""-->がお
> 勧め。
有難うございます。これも知りませんでした。

> ・権限がない。
>  ウェブサーバアカウントが実行操作できる場所ではないときにもこの
>  エラーがでたような。
シェルを有効にしていないユーザーでは、なりました。

> ・mod_includeが有効ではない。
>  Apacheのmod_includeが有効でないときも同じエラーが出ます。
>  ダミーのCGIを作ってテストしてみてください。
httpd -l でリストに有りましたので、有効かと思っています。

> ・書式の問題
>  うまく開始・終了タグが認識されない場合が数多くあります。
>  <!--#include virtual="/cgibin/count.cgi"-->
>  のようにはじめのイゲタ(シャープ?)や終わりのダブルクォーテーションには
>  スペースを入れないようにしましょう。
>  また、他のスクリプトの終了タグが認識されていないときもあるので、
>  一度HTML文書自体を掃除してみるのもいかが。
はい解かりました。
前回指摘を受けたのも、自分のドジでした。

>  ・・・って、いま前メールに添付のコンフィギュレーションをみて気が付きました。
>  /cgi-bin/ ... Alias
>  をInclude virtualで指定することは難しいのではないでしょうか。
>  FollowSymLinks 指定があるので、シンボリックリンクを貼る必要がありますね。
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 と指定
> する必要もあります。
この様な設定も必要になってくるのですか。
やはり、FollowSymLinksを外したい気持ちです。

>  これから判断すると、ドキュメントルート配下に任意のSSI用フォルダを作って
>  そこでSSIを実行できるように指定するか、

>  exec cmdで結果を返す(<!--#exec cmd="perl
> /usr/local/apache2/cgi-bin/count.cgi"-->)ように
>  するしかないのでは?
これは、動作確認できました。
上手くまとめて頂いた貴重な文書、有難うございました。

竺原

References
[plamo:21470] Re: Apache2.0.48+perlCGIについて, naomijj
[plamo:21473] Re: Apache2.0.48+perlCGIについて, Sumiya Sakoda

[検索ページ] [メール一覧]
Plamo ML 公開システム