新規記事投稿 フォロー記事投稿 記事のキャンセル
From: にあ <nir@mxa.meshnet.or.jp>
Subject: Re: index.cgiのファイル内容が表示されてしまう!
Date: 1998/08/07 06:22:34
Reference: mesh.forum.3/00502

8月6日に、MADZさんは書きました。

>>それが外してあるなら、実際のsrm.conf等は元のsrm.conf-dist等からどう変えたのか
>>diffを書いていただけると、もう少し分かるのじゃかいかしら、とは思います。
>変更点はその部分のみなんですど、一応diffを送ります。
>
ありゃ、ScriptAlias のコメントは外して無い??

...っと、チョット待って下さいね。
良く見たら、最初のMADZさんの設定では、うぇぶ会議室のディレクトリが完全に
ScriptAliasの下にありましたけど、これはまずいですね。

と、言うのは、うぇぶ会議室で生成した記事は、CGIを経由せずに
直接HTMLファイルとしてアクセスするようになっているので、
うぇぶ会議室のディレクトリ自体がCGIディレクトリだと記事まで
スクリプトとして実行してしまう(当然エラーになる)ので、記事の入る
ディレクトリは通常のドキュメントディレクトリである必要があります。

# 現在はCGIディレクトリの設定が上手く行っていないようなので
# これは顕在化していませんが。

では「うぇぶ会議室」を運用する場合どの様に設定するのが良いか? ですが、
二つの選択肢があります。

・記事ディレクトリとは違う所にまとめてスクリプトの類を置いてそこをScriptAliasで指定する。
・スクリプト用の拡張子(.cgi)を設定して、その拡張子が付いていたらどこにあってもスクリプトとして扱う。

のいずれかを使うことになります。


前者を選ぶのであれば、例えば、DocumentRootが/www/web/wwwの時、
うぇぶ会議室のsite.plで、

$forumroot = '/madz/web';
$cgiroot = '/madz/web/cgi-bin';
$forumpath = '..';

として、サーヴァのsrm.confでScriptAliasに

ScriptAlias /madz/web/cgi-bin/ /www/web/www/madz/web/cgi-bin/

を設定します。*.cgiとか*.plとかは/www/web/www/madz/web/cgi-bin/入れます。
記事のHTMLファイルは、/www/web/www/madz/web/test/等に出来ます。


後者を選ぶのであれば、うぇぶ会議室のsite.plで、

$forumroot = '/madz/web';

として、サーヴァのsrm.confでAddHandlerに

AddHandler cgi-script .cgi

を設定します。また、サーヴァのaccess.confでDirectoryに

<Directory /www/web/www>
Options Indexes FollowSymLinks ExecCGI
</Directory>

等として、ExecCGIを追加しておきます。

この場合、*.cgiや*.plは/www/web/www/madz/web/のままでいいです。
記事のHTMLファイルは、/www/web/www/madz/web/test/等に出来ます。


要は、ディレクトリでスクリプトを指定するのか、拡張子で指定するのかに依って
設定項目が違うわけですね。通常は両方とも設定しておいて、サーヴァに共通のCGIは
ディレクトリ指定の場所に置き、各ユーザごとのCGIは拡張子で指定させるというのが
一般的なサーヴァだと思います。


どうでしょうか? 分かりましたか? CGIをどこに置いて実行させるか? と言うのは
サーヴァごとにポリシーがあるでしょうからお好きな方を選んで下さい。
なるべくどんなポリシーで運用していても対応できるようにしているつもりなので。