#!/usr/bin/perl # ↑ここ、環境に応じて変更してください。■操作方法1参照 # ========================================================== #              操作方法と設定 # ========================================================== # 1. ↑冒頭の「#!/usr/bin/perl」を環境にあわせて変更します。 #   「#!/usr/local/bin/perl」か「#!/usr/bin/perl」で動くはずです。 # 2. ↓下の※変数の設定で、cgiをおくディレクトリ名「$perm_dir」を書き換えます。 # 3. ↓2つ以上のperlがインストールされているサーバでは、下で「$perl_path」を #   書き込みます。普通は空のままでいいはずです。 # 4. このファイルをmsearch.cgiと同じディレクトリにアップロードします。 # 5. このファイルのパーミッションを755または777にします。 # 6. ブラウザでこのcgiにアクセスするとチェックが始まります。 #  このcgi自体のテストをしたい場合は「check_ms.cgi?test」にアクセスしま # す。「CGI Script OK. 」と表示されればOKです。 #  jcode.plが利用可能な場合は、漢字コード・改行コードの判定も行います。 #  なお、行頭に「#」のある行はコメント行で、無視されます。 #  --------------- 変数の設定 ■操作方法2 --------------- # ↓msearch.cgiの入っているディレクトリ名を相対パスまたは絶対パスで$perm_dirに記述。 # ↓同時に、ここで指定されたディレクトリ内の詳細なパーミッションが表示されます。 # ↓ディレクトリ名の後ろに「/」はいりません。 # ↓例:$perm_dir = '../cgi-bin'; # ↓複数指定の場合は,で区切ります。 $perm_dir = '../msearch'; #  --------------- 変数の設定 ■操作方法3 --------------- # ↓普通は空のままにします。 # ↓perlが2つ以上あるサーバで、perlバージョンチェック、cgiの文法チェックで # ↓特定のperlを指定したい場合、ここにperlのフルパスを書きます。そのような # ↓サーバでは、プロバイダのFAQにバージョンとパスの情報があるはずですので、 # ↓確認してください。 # ↓例:$perl_path = '/usr/local/bin/' ; ←このように最後にperlはいりません。 $perl_path = '' ; #             設定はここまでです。 # ========================================================== # ========================================================== #             このファイルの情報 # check_ms.cgi ver.0.216 2001/10/23 変更履歴はこのファイルの最後 # 水沢・penguin-19・和彦 mizusawa@kiwi.ne.jp # http://www.kiwi-us.com/~mizusawa/penguin/index.html # Katsushi Matsudaさんの全文検索ソフトmsearchを設置するときのテスト用cgiです。 # msearchはhttp://www.kiteya.net/script/msearch/index.html # このツールはmsearchの作者Katsushi Matsudaさんとは関係がありません。ま # た、このツールはmsearchの動作を保証するものではありません。ただのチェッ # クツールです。 # このファイルは変数の変更だけで、汎用的に使えるようになっています。 # 個人・商用を問わず、このファイルの使用・改造・改造品の再配布は無断でで # きます。 # ただし、改造品の配布の場合はその旨を明記するか、オリジナル作者名を削除 # してください。混乱を避けるため、できるだけファイル名も変更してくださ # い。例:check_xxxx.cgi # CGI作者の方が、ご自分のcgiにチェックツールとしてこのファイル(またはそ # の改造品)を添付することももちろんOKです。できればご一報ください。 # ========================================================== # 以下の変数は変更の必要はありません。 $cgi_title = "msearch"; # 調査するcgiの名前 $cgi_title_url = "msearch"; # 調査するcgiの名前・urlつき $this_title = "$cgi_title設置チェック結果:ver.0.216"; # このcgiのタイトル $perl_ver = "5.x"; # このcgiがサポートするperlのバージョン。$perl_ver = "4.x、5.x"; $hissu_file = "msearch.cgi,genindex.cgi,fold.pl,jcode.pl"; # 必須ファイルのファイル名を,区切りで記述。漢字/改行コード判定の対象にもなる $arukana_file = "genindex.pl"; # オプション(なくてもいい)ファイルのファイル名を,区切りで記述 $perm_do = "msearch.cgi,genindex.cgi"; # 755、777のパーミッションのファイル名を,区切りで記述 $perm_read = "fold.pl,jcode.pl,genindex.pl"; # 444、644、666のパーミッションのファイル名を,区切りで記述 $syntax_file = "msearch.cgi,genindex.cgi"; # 文法チェックをするファイル名を,区切りで記述 $sample = 3 ; # 漢字/改行コード判定の時にファイルから読み込む最大kb数。デフォルトでは3。普通はこれで十分です。変更する場合はせいぜい10kbまでにして下さい。 # 操作方法2で指定する$perm_dirについてのメモ # ↑メモ:cgi-binなど特定フォルダでしかcgiを動かせず、データを別のディレクトリに # ↑置く場合も、ここで絶対パスでデータディレクトリを指定するとチェック可能。 # ↑その場合は念のため絶対パスで記述してください。↓cgi-binとdataディレクトリをチェックする例 # ↑例:$perm_dir = '../cgi-bin,/usr/name/html/data'; # ========================================================== # CGIテスト用 # ブラウザから「check_xxx.cgi?test」という風にアクセスしてテストします。 # Script OKと表示されたら無事動きます。macでは動作しません。 if ("$ARGV[0]" eq "test") { print "Content-type: text/html\n"; print "\n"; print "CGI Script OK.\n"; exit(0); } # ========================================================= # ■■メインルーチン print "Content-type: text/html; charset=EUC-JP;\n\n"; print <<"_HTML_"; $this_title

$this_title

 このツールは$cgi_title_urlの設置を手助けするものです。最初に、$cgi_title_urlの説明にしたがって、サーバにcgiを設置してください。その後、このツールでチェックすると、おかしなところを拾い出してくれます。

 チェックに失敗した項目は赤字で表示されます。簡単な指示はでますが、もう一度$cgi_title_urlのマニュアル等を参照して該当部分を確認してください。

 初心者が引っかかりそうなところを中心にチェックしています。改造するような中級者にも文法チェックは役に立つでしょうし、基本的なポカをなくせると思います。

 なお、このツールでチェックできるのは、cgi周りの環境で、cgiがなんとか動くようになるところまでです。cgiの中の細かい設定までは見ていません。

 cgi周りの環境についても、$cgi_title_urlのFAQに書かれている制限のうち、次の制限のチェックはこのツールではできません。つまり、このツールでエラーがないにも関わらず$cgi_title_urlが動作しない場合は、次のことが疑われます。

 c.CGIからのファイル読み込みに制限がかかっている.

 サーバによってはCGIから読み込むことができるファイル数に制限をかけていることがあります。→サーバ管理者に問い合わせてください。解決方法はFAQにあります。

 d.CGIのメモリ使用量に制限がかかっている.

 サーバによってはCGI1プロセスあたりのメモリ使用量に制限をかけているところがあります。→サーバ管理者に問い合わせてください。解決方法はFAQにあります。

 フルパス情報やperlバージョン情報、cgiファイル名など、悪用されるかもしれない情報が表示されますので、用が済んだらこのcgiはサーバから削除してください

 以下、テストの結果です。テスト結果は枠で囲まれて表示されます。

(perlが2つ以上はいっているサーバでは、perlの場所、バージョン、文法チェックなどがおかしくなります。こうしたサーバでバージョン・文法チェックをしたい場合、チェックに使いたいバージョンのperlのフルパスを変数\$perl_pathに設定する必要があります。
 このcgiの最初の方に設定部分があります。テキストエディタで開いてフルパスを書き込み、アップし直して、再度ブラウザでアクセスしてください。パスがわからなかったらお使いのプロバイダのFAQなどを確認してください。
 通常、perlは一つだけだと思いますので、\$perl_pathは空のままでいいはずです。)
_HTML_ # ====== 基本チェック print "
\n

基本的なチェック

\n"; # perlの場所 print "

 ●perlの場所:"; print "

\n\n\n\n
\n"; $cmd = "which perl" ; &cmd($cmd); print "
\n"; print "
 このcgiが動いているのですでにわかっていると思いますが、$syntax_fileの最初の行「\#!〜」をこれに合わせます。
\n ただし、perlが2つ以上あるサーバの場合はこの情報を信用せず、\$perl_pathに書いたパスを設定します。
\n"; # perlのバージョン print "

 ●perlのバージョン:

"; # print "$]
\n"; # メモ:「$]」は特殊変数でパールのバージョンを返す。不確実なので変更。 print "
\n\n\n\n
\n"; $cmd = $perl_path ; $cmd .= "perl -v" ; &cmd($cmd); print "
\n"; print "
$cgi_title_urlを動かすにはperlのバージョン$perl_ver以上が必要です。
"; # このcgiの場所 print "

 ●このcgiのフルパス:

\n"; print "
\n\n\n\n
\n"; print "$ENV{SCRIPT_FILENAME}"; print "
\n"; print "
\n"; print "

 上のパスは絶対パスでこのcgiの場所を示しています。

\n" ; print "

 web上でファイルの場所を示すURLアドレス(http://〜)と異なり、サーバの中のファイルの場所を示すのがパスです。今いる場所から目的の場所までを示す「相対パス」と、サーバのルートディレクトリ(一番上のディレクトリ)からファイルの場所までを示す「絶対パス(フルパス)」があります。
\n 絶対パスは「/」から始まります。

\n" ; print "

 「aaa/bbb」となっていれば、「/」で始まっていないので相対パスで、「今いるディレクトリにあるaaaディレクトリの下のbbb」という意味です。
\n 相対パスの場合、一つ上のディレクトリは「../」と書きます。今いるディレクトリは「./」と書きます。「aaa/bbb」と「./aaa/bbb」は同じ意味ですが、「../aaa/bbb」は意味が違います。

\n"; print " 「/aaa/bbb」となっていれば絶対パスで、「サーバの一番上のディレクトリ(/)にあるaaaの下のbbb」という意味です。意味がまるで違いますので注意。

\n"; print "

\n"; # ↓これは必要なくなった。 # $this_dir = $ENV{SCRIPT_FILENAME}; # @this_dir = split(/\//,$this_dir); # 必須ファイル変数を/で分解する # @this_dir_r = reverse @this_dir; #ひっくり返す。@this_dir_r[1]がこのcgiのあるディレクトリ名となる。 # ====== ファイルの有無・必須 print "
\n

必須ファイルの有無

\n"; print "
\n\n\n\n
\n"; @hissu_file = split(/,/,$hissu_file); # 必須ファイル変数を分解する foreach $filename ( @hissu_file ) { &umu; } print "
\n"; # ====== ファイルの有無・オプション(なくてもよい) if ( $arukana_file ne "") { # オプションがあるときだけ表示する print "
\n

オプション(なくてもいい)ファイルの有無

\n"; print "
\n\n\n\n
\n"; @arukana_file = split(/,/,$arukana_file); # なくてもいいファイル変数を分解する foreach $filename ( @arukana_file ) { &umu2; } print "
\n"; } # ====== パーミッション・チェック print "
\n

パーミッションのチェック

\n"; print "

 ■■ディレクトリのパーミッション

\n"; print "
\n\n\n\n
\n"; @perm_dir = split(/,/,$perm_dir); # ディレクトリを分解する $i = 0; foreach $filename ( @perm_dir ) { &permitdir; # 書き込み可能ディレクトリか &filemake_test ; # cgiがファイルを作れるか } print "
\n"; print "

 ■■実行ファイルのパーミッション

\n"; print "
\n\n\n\n
\n"; @perm_do = split(/,/,$perm_do); # 777を分解する foreach $filename ( @perm_do ) { &permit777; # 実行可能か } print "
\n"; print "

 ■■読み込みファイルのパーミッション

\n"; print "
\n\n\n\n
\n"; @perm_read = split(/,/,$perm_read); # 666を分解する foreach $filename ( @perm_read ) { if ($filename eq "jcode.pl") { $j_check = 1 ; } # jcodeが利用可能なら1 &permit666; # 読み込み可能か } print "
\n"; print "

 ■■詳細なパーミッション情報

\n
\n"; print <<"_HTML_";

 上のパーミッションチェックも、下の詳細で確認してください。パーミッションの変更はたいていのFTPソフトで可能なはずです。こんな感じのウインドウで設定します。

permission
読む 書込 検索/実行
オーナー:
グループ:
全員:
キャンセル  OK

 パーミッションはファイルに与えられた読込・書込・実行の権限のことで、755、644などの数字で表します。

 下の詳細表示はシェルコマンドでパーミッションを表示させています。telnetで表示されるものと同じです。ここではパーミッションは数字ではなく、各権限がダイレクトに表示されています。詳細情報の読み方は次のようになります。
 最初の「-」はそれがファイルであることを示します。「d」ならディレクトリです。次に列記されているのがパーミッション(権限)。
 rwxの3つで一組で、rは4点、wは2点、xは1点持っていて、それを足します。
 つまり、rwxなら7、rw-なら6、r-xなら5、r--なら4です。
 これが(rwxの組が)オーナー、グループ、全員の3組あります。
 この順番に各組のポイントの合計を読むと755、644などとなります。これがパーミッションです。上に示したFTPソフトのパーミッション設定も、これを理解していれば設定できるはずです。

+-------------------- d はディレクトリ。-はファイル
|+------------------- r オーナーの読込権限 4┐
||+------------------ w オーナーの書込権限 2├足して7
|||+----------------- x オーナーの実行権限 1┘
||||+---------------- r グループの読込権限 4┐
|||||+--------------- w グループの書込権限 2├足して7
||||||+-------------- x グループの実行権限 1┘
|||||||+------------- r 全員の読込権限   4┐
||||||||+------------ w 全員の書込権限   2├足して7
|||||||||+----------- x 全員の実行権限   1┘
||||||||||                   ↑
drwxrwxrwx            全部あると777となる
-rwxr-xr-x ←練習問題。このパーミッションは?  答えは755。

_HTML_ print "
\n\n\n\n
\n\n"; print "

================ パーミッションの詳細情報 ================"; # @perm_dir ディレクトリは分解済み foreach $filename ( @perm_dir ) { print "

●$filename 内のファイル・ディレクトリのパーミッション
\n"; $cmd = "ls -l $filename"; &cmd($cmd); # コマンド実行・結果表示 } print "

\n"; # ====== cgiの文法チェック print "
\n

文法チェック

\n"; print "

 「syntax OK」と表示されれば文法はOKです。エラーがでた場合は、どこかに文法的な誤りがあります。

\n"; print "
\n\n\n\n
\n"; @syntax_file = split(/,/,$syntax_file); # 文法チェックファイルを分解する foreach $filename ( @syntax_file ) { $cmd = $perl_path; $cmd .= "perl -c $filename"; print "\n

●$filenameの文法チェック $cmd:\n"; &cmd($cmd); print "$_

"; } print "
\n"; # ====== jcode.plが利用可能だったら、漢字コード・改行コードのチェック if ( $j_check == 1) { require './jcode.pl'; # こんなところでリクワイアしていいのか? print "
\n

漢字コード・改行コードのチェック

\n"; print "
\n\n\n\n
\n"; # @hissu_file = split(/,/,$hissu_file); # 必須ファイル変数は分解済み $sample = $sample *1024 ; #KBを1024倍してバイトに変換 foreach $filename ( @hissu_file ) { $line = ""; open (THIS_FILE, "$filename" ); # ファイルをオープン read ( THIS_FILE , $line , $sample ) ; #$sampleバイトだけ$lineに読込 close (THIS_FILE); # print "

デバッグ用:$filenameの内容は次の通り。
$line

\n"; # デバッグ用出力 $code = ""; # 初期化 $code = &jcode'getcode(*line) ; # 漢字コードの判定ver4 # $code = &jcode::getcode(\$line); # 漢字コードの判定ver5 print "

\n"; if ($code eq "euc"){ # eucなら print "●$filenameの漢字コードは $code です。
\n"; } else { # それ以外なら if ($code eq "sjis" ){ print "●$filenameの漢字コードは 「$code」 です。
\n"; print " 漢字コードは EUC である必要があります。

\n"; } else { # 判定できなかったら if ($code eq "jis" ){ print "●$filenameの漢字コードは 「$code」 です。
\n"; print " 漢字コードは EUC である必要があります。

\n"; } else { @suffix = split(/\./,$filename); # ファイル名を.で分解する if (@suffix[1] eq "cgi") { # cgiだったらちょっとヤバイ。 print "●$filenameの漢字コードは 判定できませんでした。
\n"; print " EUCファイルであることを他の手段で確認してください。

\n"; } else { # cgiでなければ print "●$filenameの漢字コードは 判定できませんでした。
\n"; print " おそらくファイルの中に日本語がないために判定不能だったと思われます。
\n"; print " その場合は漢字コードは関係ないのでこのままでよいはずです。
\n"; print " 念のため$filenameを開いてすべて英文かチェックしてください。

\n"; } } } } $br_code = ( $line =~ /\r/) ; # CRがあったら$br_code=1なければ0 if ($br_code == 1){ # げ、CRがあるぜ。 print "●$filenameの改行コードは Windows(CR+LF)かMAC(CR) です。
\n"; print " 改行コードは UNIX(LF)にする必要があります。

\n"; } else { print "●$filenameの改行コードは UNIX(LF) です。
\n"; } print "

\n"; # $i = $i + 1; # 次のファイルの判定 } } print "
\n"; print "
\n"; print "

 このファイルが動いているということは、すでに「漢字コード・改行コード」については知識があると思います。ちょこっとだけおさらいします。

\n"; print "

・漢字コード
\n 現在サーバで使われている漢字コードにはEUC、JIS、SJISがあります。WindowsやMacintoshなどのパソコンではSJISが使われていますが、特殊なものを除き、perl cgiはEUCにします。

\n"; print "

・改行コード
\n Windowsでは「CR+LF」、Macintoshでは「CR」が改行コードです。perlでは「LF」でないと行として認識されないので動作しません。

\n"; print "

 漢字コード・改行コードの変換には、これらを認識・変更可能なテキストエディタを使います。保存時に漢字コード・改行コードを指定して保存するだけです。Vectorなどで探すと良いと思います。代表的なところでは、Windowsでは「秀丸」、Macintoshでは「JEdit」ゃ「mi」「褌edit」などがあります。

\n"; print "

 「手元では確かにEUC/LFなのに…」という場合は、FTPツールが勝手に書き換えてアップしている場合がありますので、FTPツールの設定をチェックしてみてください。アップロードはASCIIモード(MACのFetchならRaw data)で転送しているかも要チェックです。

\n"; print "
\n"; print "
\n

 以上でテストは終わりです。
\n"; print " エラー(赤字)があったら、上から順番に赤字がなくなるようにチェックしていってください。
 このツールでチェックできないケースについては、このページの最初の方に書いてあります。ご一読下さい。

\n"; # フッタの出力 print "\n\n"; exit; # ========================================================= #  メインはここまで。以下、サブルーチン # ■■ファイルの有無を調べるルーチン・必須 sub umu{ if ( -e $filename ) { print "

●$filenameは 存在します。

\n" ; } else { print "

$filenameが ありません。
\n" ; print "  $filenameをアップロードし、パーミッションを設定してください。

\n" ; } } # ■■ファイルの有無を調べるルーチン・なくてもいい sub umu2{ if ( -e $filename ) { print "

●$filenameは 存在します。

\n" ; } else { print "

$filenameがありませんが、このファイルは必須ではありません。

\n" ; } } # ■■パーミッションを調べるルーチン ファイル・読み出し可能か sub permit666 { if ( -r $filename ) { print "

●$filenameは 読み込み可能 です。

\n" ; } else { print "

$filenameは 読み込みできません。
\n" ; print "  パーミッションを666、644または444にして下さい。

\n" ; } } # ■■パーミッションを調べるルーチン ファイル・実行可能か sub permit777 { if ( -x $filename ) { print "

●$filenameは 実行可能 です。

\n" ; } else { print "

$filenameは 実行権限がありません。
\n" ; print "  パーミッションを777または755にして下さい。

\n" ; } } # ■■パーミッションを調べるルーチン ディレクトリ・書き込み可能か sub permitdir { if ( -w $filename ) { print "

●$filenameディレクトリは 書き込み可能 です。

\n" ; } else { print "

$filenameディレクトリは 書き込みできません。
\n" ; print "  パーミッションを777または755にして下さい。パーミッションが正しいのにこのエラーがでる場合は、次の「cgiがファイルを作成できるか」を参照してください。

\n" ; } } # ■■cgiがファイルを作れるかテストするルーチン sub filemake_test { # まずファイルを作ってみる。 $testfielname = "msearch_test.txt" ; # テストで作成するファイル名 if (open(OUT, ">> $testfielname")) { # ファイル生成に成功したら flock(OUT, 2); # 念のためロック。close時に自動的に解除される printf(OUT "このファイルはテスト用のファイルです。\n"); printf(OUT "不要ですので、残っていたら削除してください。\n"); close(OUT); # エラーがなかったのでそのままファイルを削除して報告 unlink ($testfielname) ; # ファイルを削除して print "

 →cgiがファイルを作成できるかチェックしました。
\n"; print "  $filenameディレクトリは cgiがファイルを作成可能 です。

\n"; } else { # ファイルが作れなかったら print "

 →cgiがファイルを策せできるかチェックしました。
\n"; print "  $filenameディレクトリは cgiがファイルを生成できません
\n"; print "  このディレクトリのパーミッションが777、755など書込可能になっているにも関わらずこのエラーがでた場合、cgiがファイルを生成できないようにサーバの制限が設けられています。このままではインデックスファイルを作成できませんので、あらかじめ「mindex.dat」という空っぽのファイルを作り、パーミッションを666にしてからインデックスをつくって下さい。

\n"; } } # ■■コマンド実行ルーチン・perlのバージョン、ls、文法チェックで使用 # シンタックスチェックはシステムコマンドではなくperlデバッガなので # readpipeが使えないらしい。そこで、open ( ハンドル, コマンド| )を使う。 # 自分のためのメモ。 #  名称    ファイルハンドル  装置名   シェル # 標準入力    STDIN      キーボード   0 # 標準出力    STDOUT     ディスプレイ  1 # 標準エラー出力 STDERR     ディスプレイ  2 #  telnetでは出力の種類は意識しなくてもディスプレイにでてくるが、スクリ # プトでは区別されるため、エラー出力(2)を標準出力に振り替えて(>&1)受 # けとる。これがわかるまで苦労したぜ、くっそー。 # sub cmd{ # 破棄されたルーチン。記念にとってある。 # open(TEST,"$_[0] 2>&1|"); # while () { # if ( $_ =~ /syntax error | compilation errors/){ # 結果の文字列にerrorがあったら # print "
  $_\n"; # }else { # # if ( $_ =~ /Can't open/){ # オープンできないといわれたら # print "
 ファイルがありません。
  $_
\n"; # } else { # バージョン/ls/OKだったら # print "$_
\n"; # } # } # } # close(TEST); # } sub cmd { $output = `$_[0] 2>&1`; $output =~ s/\n/
/g; $output =~ s/\x09/    /g; if($output =~ /errors|Can't open/) { print "
$output\n"; } else { print $output; } } # ========================================================== #                変更履歴 # ●ver.0.216 2001/10/23 公開 #  このツールでチェックできない事項について加筆(cgiの参照できるファイル # 数とcgiに許されたメモリ空間)。 #  msearchをおいたディレクトリが書込禁止の場合の対処法を改訂。 #  汎用ツールのつもりで作ってきたが、こうなってくるとmsearch専用って感じ # になってきた(^^; #  チェックできるものは一応網羅できたようなので、βを取った。 # ●ver.0.215β 2001/10/20 公開 #  cgiがファイルを作れるかどうか、ファイルをつくって試す、という機能を追 # 加(インデックス作成可能かテスト)。ファイルづくりに失敗したらcgiがファ # イルを作ることをサーバが制限している可能性がある。 #  インデックス作成ディレクトリでエラーがでた場合の対処法を追加。 #  MAC版IEでフルパス情報の表示が乱れるバグを修正。 # ●ver.0.214β 2001/9/19 初公開 #  Katsushi Matsudaさんにお教えいただき、一部ルーチンをスピードアップ& # その他エラーを引っかけるように変更。 # ●ver.0.213β 2001/9/18 未公開 #  このcgiのテストルーチンを付けた。「check_xxx.vgi?test」にアクセスす # るとテストする。 #  結果表示部分をテーブルで囲んで出力するように変更した。 # ●ver.0.212β 2001/9/14 未公開 #  解説部分を加筆した。 #  既知の問題。結果表示と解説部分の区別が付きにくい。何らかの表示ルール # が必要。 # ●ver.0.211β 2001/9/13 未公開 #  「ls -l」でパーミッションを示すディレクトリを、このcgiをおいてある # ディレクトリだけでなく、$perm_dirで指定したディレクトリ全部に変更。こ # れは、cgi-binなどにcgi置き場を限定されていて、別にdataディレクトリを持 # たなくてはならないcgiに対する対策。 #  普通はdataディレクトリが書き込み可能かチェックするだけですむはずだ # が、そのディレクトリにplファイルを置くような場合に有効。 #  dataディレクトリ内のファイルに対しても実行可能・読込可能などの判定を # したい場合は、$hissu_fileにパス付きで記述することで対応できる。 # ●ver.0.21β 2001/9/12 未公開 #  読込バイト数を制限するようにしたので、改行コードがMACでもメモリを食わ # なくなった。デフォルトでは3kbまで。 #  readpipeを廃止し、perl4でも動作するようにした。 # ●ver.0.2β 2001/9/11 未公開 #  ファイル名を「ms_test.cgi」から「check_ms.cgi」に変更。 #  ls -lコマンドで詳細なパーミッションを表示するようになった。 #  jcode.plが同じディレクトリにあって実行可能な場合は、漢字コード・改行 # コードのチェックも行うようになった。 #  2つ以上perlがあるサーバでも動作可能になった。Katsushi Matsudaさん、 # ありがとうございました。 #  既知の問題として、改行コードチェックの時に、改行コードがMACだった場 # 合、全文読み込むためメモリを食ってしまう。困った。 # # ●ver.0.1 2001/9/11 未公開 #  cgiの文法チェックが一応できるようになり、αが取れた。 #  perlが2つ以上はいっているサーバへの対応はまだできていない。 # # ●ver.0.1α 2001/9/10 未公開 #  最初のバージョン。 # ==========================================================