homeホームHTMLに役立つヒント> CGI設置入門

CGI設置入門

 perlで書かれたCGIを設置したい、お仕着せじゃない掲示板、チャット、全文検索を設置したいという方向けの、ごく基本的なCGI設置方法の解説です。

 CGIにはいろんな言語で書かれたものがあります。C言語やJAVA、ruby、AppleScriptなどで書かれたものもあります。んが、たいていの場合、CGIといえばperlで書かれたCGIのことを指しています。このページでは、以下、CGIはperlで書かれたCGIを指しています。

[このページの改定日: 06/09/04 15:46]  あなたはここへ来た、 126279番目の人です。(2001/9/19より)


■■ 目次 ■■


■CGIの許可/不許可、設置場所の確認 ▲ページトップ

●CGIを設置できるか

 真っ先にやらなくてはいけないのは、あなたが利用しているプロバイダではユーザーにperl CGIの設置を許可しているかどうか確認することです。許可されていないと設置できません。

 たいていのプロバイダでは、FAQページがあり、そこにCGIの設置を許可しているかどうか書かれているはずです。プロバイダが用意したCGIしか許可していないケースもありますのでご注意。この場合はお仕着せCGIオンリーで、自由にCGIを設置することができません。

●CGIの置き場所

 次に、どこにCGIをおくのか確認してください。CGIの設置場所は大きく分けて2通りあります。

 一つは、どこにでもCGIをおけるパターン。
 二つ目は「cgi-bin」など特定の名前の付いたディレクトリ(フォルダ)にしかおけないパターン。

 この情報はディレクトリ構造が関与してきますので、誰でも見られるFAQページにはないことがあります。その場合は会員向けの(会員しか見られない)FAQページなどを確認してみてください。

 また、どのディレクトリにもCGIをおけるプロバイダの場合、「.htaccess」というおまじないファイルを置かなくてはならない場合もあります。この場合もプロバイダのFAQにやり方がでているはずです。その解説通り設定してください。

●CGIにアクセスするためのURL

 設置したCGIにアクセスするためのURLも確認しておいてください。cgi-binなど特別なフォルダにCGIを置く場合は、URLが通常と異なる場合があります。

●.cgi、.plファイルなどのパーミッション

 CGIを動かすためには、パーミッション(後述)ルールにローカルルールがあることもあります。これもプロバイダのFAQに「.cgiファイルのパーミッションは必ず755に」などと解説がでているはずです。これも確認しておいてください。


■設置手順 ▲ページトップ

 CGIを設置するまでの大きな流れを説明します。

1.設置したいcgiファイルをダウンロードしてくる。 ▲ページトップ

フリー・シェアウェアを含め、インターネットのあちこちにCGIスクリプトはあります。掲示板、チャット、カウンタ、全文検索ソフト、アクセス解析など、たくさんのものがあります。googleあたりで「cgi perl 配布 リンク集」などで探すと良いでしょう。

2.解凍する。 ▲ページトップ

 配布されているCGIはたいてい圧縮ソフトで固めてあります。UNIX標準の.tar.gzファイルであることが多いです(最近は.lzhや.zipが多くなってきました)。Windowsならzipで、MACならStuffIt Expanderで解凍できます(ファイルがlh7形式の.lzhの場合、StuffIt Expanderでは解凍に失敗しますのでご注意。その場合はMACLHAなどを使います)。

 .tarファイルは複数のファイルを1つのファイルにまとめてテープにバックアップするファイルフォーマットです。.gzはUNIX標準の圧縮ソフトで固められた(圧縮された)ファイルです。つまり、.tar.gzは一つのファイルにまとめた上に圧縮してあるわけです。

 解凍の際には、中間ファイルとしていったん.tarファイルが生成されることがありますが、これは必要ありませんので削除してかまいません。

3.CGIファイルを開いて設定する。 ▲ページトップ

 必ず.cgiファイルを開いて設定する必要があります。

3-1 テキストエディタについて 〜文字コード(漢字コード)と改行コード ▲ページトップ

 .cgiファイルを開くにはテキストエディタを使います。ワープロで開いてはいけません。Windowsの方はメモ帳で開く人がいるようですが、これも御法度です。同様にMacintoshの人はSimpleTextやTeach Textを使わないでください。

文字コード 漢字コードともいいます。現在、サーバで使われている文字コードにはEUC、SJIS、JISがあり、それぞれ文字を表すコード体系が異なります。EUCコードのものをSJISとして開いたり、その逆をやると文字化けするのはこのためです。特殊なものを除いて、perlスクリプトはEUCにします。

改行コード ファイルの改行位置を示すのが改行コードです。改行コードが違っていると、perlは改行を認識できません。WindowsはCR+LF、MACではCRが改行コードですが、UNIXではLFが改行コードです。

 UNIXサーバ上では文字コードをEUCに、改行コードをLFにしなくてはいけません。CGIの解説で「EUC/LFで保存」などと書かれているのはこのことです。

 そのために、文字コード、改行コードを認識できるテキストエディタを使う必要があります。vectorなどで探すと良いでしょう。Windowsでは秀丸EmEditor、MacintoshではmiJeditがいいでしょう。

 文字コード・改行コードの変換は簡単で、テキストエディタで.cgiファイルを読み込み、保存するときにEUC/LFを指定して保存するだけです。

 もし、保存時に文字コードや改行コードの指定がでてこなかったら、そのテキストエディタは改行コード/文字コードのコントロールができない可能性が高いので、直ちに編集を止めてください。

 また、複数のファイルの文字コード/改行コードを変換できるユーティリティもあります。CGIのファイル数が多い場合はこのようなユーティリティを使うとよいでしょう。ファイルをドラッグ&ドロップするだけで簡単に変換できます。vectorあたりで「文字 改行 コード 変換」をキーワードに探すと見つかるはずです。

 初心者のCGI設置失敗の原因の半分は、文字/改行コードをコントロールできないソフトで編集してしまったことによります。

 もし1度でもコントロールできないソフトで編集・保存をしてしまったという場合は、改行コードが知らない間に混在したり、余分なコードが入ってしまっている可能性があります。これを修正するのは知識がないと大変なので、そのファイルをあきらめてもう一度解凍から(ダウンロードファイルを捨てている場合はダウンロードから)やり直した方が手っ取り早いです。

 なお、.plファイル(.cgiから呼び出される外部ルーチンファイル)が必要なCGIの場合は、これらの文字コード/改行コードもチェックしてください。

3-2 最初の1行 ▲ページトップ

 .cgiファイルの最初の1行目には決まりがあって、必ずperlの位置を書かなくてはいけません。「#!/usr/local/bin/perl」か「#!/usr/bin/perl」のはずです。
 どちらの位置にperlがあるのかは、お使いのプロバイダのFAQを参照して下さい。

 もし位置がわからなければ、「#!/usr/local/bin/perl」か「#!/usr/bin/perl」のどちらかのはずなので、片方でうまくいかなかったら、もう片方を試すといいでしょう。

3-3 変数などの設定 ▲ページトップ

 .cgiファイルには、解説とともに変数をユーザーが設定するようになっているものが大半です(大きなシステムでは変数ファイルが独立しているものもあります)。

変数の例↓

===============================

# 背景色を指定してください。
$haikei = "#ffffff";

===============================

 perlでは「#」はコメントの印です。上の例では、行頭に「#」のついている「# 背景色を指定してください。」はコメントとして無視されます。「$haikei = "#ffffff"; # コメント」のように、行の途中にあっても「#」以降はコメントとして無視されます。

 「$」は変数を示す記号です。上の例では「$haikei」が変数の名前、「"#ffffff"」が変数に代入される値です。

 「;」は行の終わりを示すものですので、削除してはいけません。

「あれ? 行の終わりは改行コードじゃないの?」というあなた、なかなか鋭いです。ここでいう「行」とは「perl上の処理単位」の意味で、改行コードとはまた別物です。ま、あんまり深く考えずに先に進んでください。

 この例では「$haikei = "";」が変数の定義部分で、「#ffffff」が変数(ユーザーの書き換える)部分です。あるいは「$haikei = '#ffffff';」のようにダブルクォーテーション(")ではなく、シングルクォーテーション(')で囲まれている場合もあります。必ずこの中だけを書き換えます。
 次に示すのは間違った例で、いずれも動きません。

$haikei = "#ffffff ←間違えて最後の「";」が削除されている
$haikei = #ffffff"; ←間違えて変数の前の「"」が削除されている

 ""や''で囲まれていない場合もありますが、これは数値の場合がほとんどです。

===============================

$suuji = 1 ;

===============================

 必ず数字の部分だけを書き換え、後ろの「;」を削除しないようにしてください。

 変数の書き換えが終わったら、次のステップに進みます。

コラム:SJISスクリプトの文字化け

 基本的にperlはEUCで動かします。スクリプトをSJISにすると、パターンマッチングでおかしくなったり(検索系スクリプトでは致命的)、HTML出力の際に文字化けする文字がでたりします。

 中にはSJISでないと動かないというサーバもありますが(IISサーバでSJIS/CR+LFでないと動かないものにぶつかったことがあります)、この場合はパターンマッチはどうしようもありません。せめて文字化け対策をしておいてやりましょう。

●文字化けの防ぎ方
(参照:http://www3.biwako.ne.jp/~nobuaki/webcal/faq.html
1. 文字列を" "ではなく、' 'で囲む。ただし' 'はメタ処理をしないので、変数や改行が' 'の間にあるとダメ。

2. 文字化けする文字の後ろに「\」を入れる。
 ただし、万能ではない模様。

●文字化けする文字の一覧
―ソЫ\噂浬欺圭構蚕十申曾箪貼能表暴予禄兔喀媾彌拿杤歃濬畚秉綵臀藹觸軆鐔饅鷭\\
(参照:http://www2d.biglobe.ne.jp/~gama/cgi/jcode/jcode.htm

 以上、フツーのperlのことです。Jperlは経験ないのでわかりません。

 EUCスクリプトをSJISスクリプトに書き換える際には、文字化け対策以外に内部処理の変更が必要になる場合があります。
例1:accept-charset="x-euc-jp" → accept-charset="Shift_JIS"
例2:&jcode::convert(\$value,'euc'); → &jcode::convert(\$value,'sjis');

 内部処理だけeucで処理し、出力だけSJISにしたりするケースもありますので、よく判らない場合は手を出さない方が無難です。

4.ファイルのアップロード。 ▲ページトップ

 FTPツールを使って.cgiファイルを所定の場所にアップロードします。アップロード場所は最初に確認していますね?

 FTPはファイル・トランスファー・プロトコルの略で、名前の通りサーバとファイルのやりとりをする手順です。FTPツールは、この手順に則ってファイルのやりとりをしてくれます。

 FTPツールもvectorなどで探すといいでしょう。雑誌の付録にも付いていると思います。

 FTPツールでは、接続先(FTPサーバの名前またはIPアドレス)、接続名(ID。たいていの場合あなたのプロバイダのログインネーム)、パスワード(電子メールのパスワードとは違っている場合もあります。わからなければプロバイダに確認してください)をあらかじめ設定しておきます。

 アップロード先を間違えないようにしてください。最初に確認したように、どこにでも.cgiをおけるプロバイダと、cgi-binなどの決まったディレクトリにおかなくてはいけないプロバイダがあります。決まったディレクトリにおかなくてはいけない場合は、そのディレクトリ以外の場所に.cgiをおいても無視されて動作しません。

 ファイル・ディレクトリをアップするには、今ではほとんどのFTPツールがドラッグするだけでよいはずなので、難しくないでしょう。操作方法がわからない場合はツールに付属の操作説明書を読んでください。

●転送モード

 FTPツールでひとつ注意しなくてはいけないことがあります。.cgiや.plなどのテキスト形式のファイルはアスキーモードで転送する、ということです。画像ファイルはバイナリ形式でアップします。

 僕はMACのFetchというツールを使っていますが、初期設定の「upload」で「raw data」で転送するように設定しておくのが確実です。

5.パーミッションの設定。 ▲ページトップ

 パーミッションとは「権限」のことです。UNIXではファイルやディレクトリには権限が付与され、例えば読み出し権限がないファイルは読むことができません。実行権限を付与しないと、CGIは実行されません。

 CGIの説明書きに、どのファイルにどんなパーミッションを与えるのか書かれているはずです。その説明にしたがってパーミッションを与えます。

 パーミッションはFTPソフトでも設定できます。下の図はMACのFetchというFTPソフトでパーミッションを設定しているところです。

FTPでパーミッション

 この図を見るとわかりますが、パーミッションは「読込」「書込」「実行」の3つの種類があり、それぞれが「オーナー」「グループ」「全員」ごとに設定できるようになっています。

 CGIの説明書などでは「パーミッションを755にします」などと書かれていると思います。
 こう考えます。「読込」には4点、「書込」には2点、「実行」には1点のポイントがあります。これをオーナー・グループ・全員ごとに足します。

 上の図ではオーナーは読込4点、書込2点の権限がありますから、6点ということになります。グループは読込4点だけなので4点です。全員も同じですね。
 オーナー・グループ・全員の順にポイントを読むと「644」となります。これがパーミッションです。

読む 4点 書込 2点 実行 1点 合計
オーナー 6
グループ 4
全員 4

 ちょっと面倒ですが、すぐになれるでしょう。次に示すのは755、444の場合です。もうわかりましたね。

読む 4点 書込 2点 実行 1点 合計
オーナー 7
グループ 5
全員 5

読む 4点 書込 2点 実行 1点 合計
オーナー 4
グループ 4
全員 4

 CGIによっては、ディレクトリ(フォルダ)にもパーミッションを設定する必要があります。忘れずにすべてのファイル・ディレクトリにパーミッションを設定します。

※CGIに付属の説明書は、標準的なサーバを前提に書かれています。しかし、「CGIは必ず700でなくてはならない」など、独自のパーミッション設定をしているサーバもあります。あるいはCGIラッパーをかましていたりと、サーバによってパーミッション事情は微妙に異なります。
 こうしたローカルルールのあるサーバではCGIの説明書通りにパーミッションを設定しても動きません
 その場合には、もう一度プロバイダのFAQなどに目を通してください。「CGIのディレクトリのパーミッションは700にして下さい」などの記述があるはずです。それでもダメならパーミッションを変更してトライ&エラーで行くしかありません。

 初心者の失敗原因の半分はエディタ(文字コード/改行コードのミス)にあると書きましたが、残りの半分はパーミッションの設定ミスです。CGIの説明書とサーバ環境が食い違っていることはよくありますので、説明書通りのパーミッションにして動かなくてもトライ&エラーでがんばってください。

 また、ファイルのパーミッションを指定して、ディレクトリのパーミッションを指定し忘れるというケースもよくみかけます。ご注意。

6.cgiファイルのテスト。 ▲ページトップ

 telnetが許されているプロバイダの場合、telnetから.cgiのテストができます。.cgiのおいてあるディレクトリまで降りて、「perl -c ./ファイル名」と打ち込むと、文法が間違っていないかチェックしてくれます。

 できればチェックしてから.cgiを動かすようにします。

 簡単なUNIXコマンドは「知っておきたいUNIXコマンド」にまとめてありますので参照してください。ただし、自分用のメモなので見やすくないです<(_ _)>

7.cgiを動かす。 ▲ページトップ

 IEやネスケなどのブラウザで.cgiファイルにアクセスします。これだけで.cgiは動作するはずです。

メモ:「file:///〜」と「http://〜」

 ローカルサーバでテストされている方で、「ブラウザでアクセス」というのがわからなかった方から質問をいただきました。

 ブラウザのURL欄を見て「file:///〜/xxx.cgi」となっていたら、それはブラウザがwebサーバを通さず、直接ファイルをハードディスクから読んでいます。単にファイルを開いているだけで、「webサーバを通してアクセス」していません。この場合はテキストファイルを開くのとかわりがありません。

┌──────┐   ┌────┐
│.cgiファイル│ → │ブラウザ│
└──────┘   └────┘

 URLを「http://〜/xxx.cgi」というように記述して、webサーバを通じてCGIにアクセスしてください。でないとperlが起動しません。perlが.cgiファイルを処理してはじめてCGIとして動作します。

┌──────┐   ┌──────┐   ┌────┐
│.cgiファイル│ → │サーバが処理│ → │ブラウザ│
└──────┘   └──────┘   └────┘

 ローカルサーバなら「http://localhost/〜/xxx.cgi」または「http://127.0.0.1/〜/xxx.cgi」という具合にアクセスするとよいでしょう。どちらも自分自身を呼び出す記述法です。もちろん、ローカルサーバとperlが機能している必要があります。


■トラブルシューティング ▲ページトップ

 エラーが表示された場合の対処方法を書きます。エラーの時に表示されるエラー番号が大事です。

1. Error 500--Internal Server Error

 もー、原因はさまざま。「これ」と特定できません。一通り、次の点をチェックしてみてください。

□ 文字コード・改行コードはEUC/LFか。
 最も多い失敗です。基本であるが故に「したはずだ」で確認を怠り、罠にはまった人をたくさん知っています。僕もやりました(^^;

 作業は必ず文字コード/改行コードをコントロールできるテキストエディタで行ってください(3-1 テキストエディタについて)。

 「ダウンロードしたままで.cgiファイルをいじっていないから大丈夫のはずだ」という方もいらっしゃいましたが、結局その過信が仇となっていました。文字コード/改行コードは必ず「あなたが」確認してください。

 手元でEUC/LFでも、FTPソフトが転送時に勝手に書き換えることがあります。FTPソフトの設定も確認してください。僕はかつて、これではまったことがあります。FTPツールが、アップロード時に改行コードLFをCRに自動書き換えしていました。くくぅ。

□ パーミッションは正しいか。
 この失敗も大変多いです。CGIに付属の設置マニュアルにしたがって、パーミッションをもう一度確認してください(5.パーミッションの設定。)。

 前述のように、マニュアル通りに設置してもサーバ環境によって動かないことがありますのでご注意。ちなみに僕の入っているプロバイダ(kiwi)では、CGIラッパーが入っているため、.cgiはすべて700にしないと動きません。ご利用のプロバイダで同様の制限(ローカルルール)がないかプロバイダのFAQを確認してみましょう。

 これも繰り返しになりますが、ファイルにだけパーミッションを設定して、ディレクトリにパーミッションを設定し忘れていないか、確認してください。

□ .cgiファイルの1行目の設定は間違っていないか。
 「#!/usr/local/bin/perl」か「#!/usr/bin/perl」で動くはずです。

□ 構文が間違いないかチェックする。
 変数を変更した際に構文を壊しているかもしれません。telnetできるなら、.cgiのあるディレクトリに降りて「perl -c ./cgiファイル名」と打ち込んでください。構文チェックをしてくれます。

 以上の4点をチェックすることでたいてい動くようになるはずです。

 和家 常幸さんの「CGIROOM」というページには、.cgiのどこでエラーがでているのかチェックしてくれるツールがありますので、これを利用するのも良いと思います。

 あなたが設置しようとしているCGIがmsearchであれば、「msearch導入記」にチェックツールをおきましたのでご利用ください。

 こちらに文法チェックをしてくれるCGIを置きました。telnetができない環境では使えるかも。check_cgi.txtをクリックして、中の説明に従ってください。

2. 403 Forbidden

 アクセス権限がないといっています。パーミッションをチェックしてください。CGIの入っているディレクトリのパーミッションもチェックしてください。CGIにはアクセス・実行権限があるのに、CGIの入っているディレクトリにアクセス権を設定していなかった、という失敗も結構あります。

 .cgiファイルを置いているディレクトリが正しいかもチェックしてください。.cgiの置き場所はcgi-binに限定されているのに、それ以外のところにおいていませんか?

 混雑している場合もこのエラーがでることがあります。また、そのディレクトリが会員限定などの制限を受けている場合もこのエラーとなります。その場合は置き場所を変更しましょう。


■サポート掲示板で質問する場合 ▲ページトップ

 CGIの作者は、同じ質問に答える労力を省くため、ほぼ必ずFAQを作っています。まずはFAQページを確認しましょう。

 CGI作者がサポート掲示板を開設していることもあります。たいていの場合、過去にあなたと同様の障害にぶつかった人がいるものです。焦らずにサポート掲示板の過去の事例を探してみましょう。検索機能の付いた掲示板ならそれほどの手間ではないはずです。

 くれぐれも、最初は「FAQを確認」、次に「サポート掲示板の過去ログ調べ」です。それで自分に当てはまる事例がないようなら、いよいよサポート掲示板に投稿してみましょう。FAQや過去ログを調べずに安易にサポート掲示板に質問すると、無視されるかFAQだよといわれるのが落ちです。CGI作者の方は大変な労力をかけてCGIを作成し、それを配布してくださっているわけですから、掲示板の過去事例を調べるぐらいの手間を惜しんではいけません。バチが当たります。

 さて、サポート掲示板には暗黙のルールがあります。

1. 相談内容がわかるタイトルを付ける

 中味を読まなくても、ある程度相談内容がわかるようなタイトルを付けましょう。「動きません」「助けて」「質問です」などがダメなタイトルの典型です。サポート掲示板に書き込む時点で「動かなくて」「助けて」ほしいので「質問する」ことはわかり切ってますし。こういうタイトルの質問は、コメントがつきにくくなります。

 なぜかというと、こういうタイトルを付けてくる質問者は、症状や問題点を把握し切れていないことが多いからです。ひどい場合は、症状を的確に説明できないばかりでなく、あれはどうなっているか、これはどうなっているかなどと、基本的な状態把握から始めなくてはならず、アドバイスする方にとっては非常に手間ヒマがかかるんですね。なので嫌われます。

 「XXXしようとすると、XXXXエラーが(出ます)」くらいは書きましょう。

2. 環境、エラー状況などを詳しく書く

 など、できるだけ正確に書きましょう。不具合の症状は具体的に書いてください。「動きません。どうしたらいいですか」といわれても、いわれた方はなんの手がかりもないですから、たぶんコメントは返ってきません。「xx.cgiにアクセスしましたが、『サーバーエラー500』というエラーがでて動きません」などと具体的に書くことを心がけてください。

3. アドバイスの結果を報告する

 アドバイス(コメント)があったら、アドバイスのうち「何を実行して何を実行しなかったか、実行の結果はどうだったか」、キチンと報告してください。あなた自身はアドバイスのうち何をどう実行したのかわかっていますが、他の人にはわかりません。初心者はどういうわけか「自分がわかっていることは人もわかっている」と思いこむようです。報告が何もなければ「無視した」のと同じことです。

 「対策A、対策B」を示されたのに、「やってみましたが変わりません」だけというのが手抜き報告の典型です。「対策Aでは○○となり、対策Bでは△△となりました」くらいは書いてほしいものです。これをしない人が非常に多いように思います。結果が変わらない、というのも大事な手がかりです。

 「これこれのコマンドを試して」などといわれたら、自分がリモコンロボットになったつもりでそのコマンドを試し、必ず結果を報告してください。

 結果報告を怠ると、状況を正しくつかめないばかりでなく、同様の症状にみまわれた他の人の参考になりません。解決した場合も、きちんと報告してください。どのアドバイスで解決したのかわからないと、これまたほかの人の参考になりません。

 サポート掲示板というのは、いわば自分たちで作るFAQ集なのです。自分だけが解決すればいいという態度は捨てて、他の人にも役に立つように心がけましょう。

4. 自助努力を怠らない

 少しずつでもperlやサーバについて勉強するようにしましょう。あれがわからない、これがわからないばかりでは相談された方も困ります。

 CGIを設置し、それを管理運営していくのはあなたですから、どうしてもある程度の知識が必要になってきます。あなたが主体になるしかありません。勉強をしない、自助努力のない人は助けようがありません。そういう人は設置業者にお金を払って設置してもらってください。


■perl豆知識 ▲ページトップ

perlの基本についてちょっと書いておきます。

1. 最初の1行

 .cgiの最初の1行目には「#!/usr/local/bin/perl」などと書かれています。これはそのファイルを実行するperlの置き場所を指定しています。perlの置き場所はプロバイダならFAQに書いてあるはずです。telnetが使えるなら「which perl」というコマンドでわかります。
 この行だけは必ず「#!」ではじめます。

2. URLとパス

 「パス(path)を記述して」という指定に、URLを記述して.cgiが動かないといっている人がたまにいます。URLは「http://〜」で始まる、おなじみのあれですね。URLは「世界中のwebサーバのどこにそのファイルがあるのか」を示しています。

 これに対して、パスは「ファイルがそのサーバの中のどこにあるか」を示しています。意味が違いますからご注意。

 さらに、パスの書き方には2通りあります。相対パスと絶対パス(次項)です。

3. ディレクトリ/ファイルの指定 〜相対パスと絶対パス

 その.cgiのあるディレクトリ(フォルダ)と同じディレクトリにあるファイルを指定するときは「./filename」と書きます。「./」が同じディレクトリだよ、ということなんです。
 一つ上のディレクトリの場合は「../filename」とします。「../」が一つ上を意味します。
 二つ上は、もうわかりますね。「../../filename」です。

 「dirname/filename」となっている場合はどうでしょうか。これはcgiのあるディレクトリの中の「dirname」というディレクトリの下にある「filename」というファイルを示しています。

 と、ここまでは「相対パス」といって、そのcgiから見てファイルがどこにあるか、という書き方です。.cgiからの相対位置になりますから、.cgiがどのディレクトリにあるかが重要になります。これに対して絶対パスという書き方があります。

 絶対パスは必ず「/」から書き始めます。「/usr/local/bin/perl」も絶対パスです。こちらはそのサーバの中のどの位置にあるかを意味しています。記述してある.cgiの位置に左右されません。

4. 設定(変数)の書き換えの時に

 ほとんどの.cgiでは設定を書き換える必要があります。このとき、""で囲まれていたり''で囲まれていたりしますが、これらの""や''を削除してはいけません。

$abc = "hensuu";
$abc = 'hensuu';

 たまに次のように何もかこまれていない場合がありますが、これは数字や英数字の場合のはずです。この場合は"や'は必要ありません。

$abc = 100;

$abc = http://www.aaabbb.com/;

 また、最後の「;」も消してはいけません。perlは「;」が行の最後()と判断します。これがないと行が続いていると思ってしまいます。

正しくは行の最後ではなく、1つの処理の最後。通常は1行に1つの命令を書くので、1行1命令と思ってください。

5. コメントアウト

 perlは「#」以降に書いてある文字をコメント文だと思って無視します。通常は行頭におきますが、行の途中においてある場合もあります。次の赤字の部分がコメントです。

# これはコメントです。行頭に#があります。行全体がコメント文と見なされます。
$abc = "hensuu"; # これもコメントです。行の途中に#があります。#以降をコメント文と見なします。

 以上の知識があればなんとかCGIを設置できるはずです。うまくいかなくても、焦らずにひとつひとつチェックしていきましょう。動いたときの感激もひとしおです。がんばってください。

 ▲ページトップ


homeホームHTMLに役立つヒント> CGI設置入門