トップ > CGI(Perl)の解説

※ここの解説は、後になるほど省略されている場合がありますのでできるだけ順番に読んでください。

■ 3.CGIのテスト

さて、CGIの説明を行う前に、CGIHTMLとは全然別格の知識が必要となりますので、次の点を覚えておいて下さい。

HTMLは、どちらかというと文字やページを修飾するのが目的でした。
ですから必要な箇所を必要なときに変更することができます。

ところが、CGIは一連の処理をするのが目的です。
従って、複雑なものを作成するときは、すべての行に意味があってそれぞれがつながった状態で処理されます。

極端に言えば、1,000行もある長いCGIを作成した場合、たった一箇所の(あるいは1文字の)ミスがあるため、そのCGI自体が動かなくなることはよくあります。
私も、何度も経験をしています。

経験不足や知識不足でCGIを作成したり、修正したりすることは、非常に危険を伴います。
そこのところを必ず覚えておいて下さい。

そして、もし経験不足や知識不足の場合は、一度に大きな作業を行わず、小さな変更を加えたら必ず動作確認を行うようにしましょう。
また、できるなら修正前の状態を別フォルダにでもコピーをとって、いつでも元に戻れるようにしておきましょう。

最初に最も簡単なCGIのサンプルを紹介します。

■ CGIのサンプル

【記述サンプル】
#!/usr/bin/perl print "Content-type:text/plain\n\n"; print "CGIのテスト";

まず、1行目はPerlCGIを記述するとき必ず記述します。
ただ、今回のようなローカルテストでは関係ありませんが、サーバー側でテストをするときには正しく記述する必要があります。

これは、サーバー側でCGIを実行するとき、サーバーのどこにPerlがあるかを指示しています。

ほとんどのプロバイダが上記のような記述で実行できます。
ところが、プロバイダによっては、次のような記述に変更しなければならない場合もあります。

#!/usr/local/bin/perl

もし、この記述が分からない場合は、必ずプロバイダ、もしくはサーバー管理者に問い合わせてください。
ここを間違えるとサーバー側でのテストは先に進めませんので必ず確認してください。

次に、3行目はこれから表示されるものは「テキスト形式」ですよという命令です。
「Content-type」の1文字目は必ず大文字でそれ以外は小文字です。
次に、4行目は「CGIのテスト」を表示しなさいという命令です。

命令の最後は必ず「;(セミコロン)」で終了してください。
セミコロンは、キーボードの右側の「れ」のキーと同じです。

このセミコロンも大事です。セミコロン1文字無いだけでCGIが実行しない場合もあります。

■ CGIの作成

それでは、上記のサンプルでCGIを作成してみましょう。
まず、次のようにホームページのあるフォルダ内に新しく「cgi-bin」というフォルダを作成してください。

c:\my documents  |  └myhome(ホームページのフォルダ)   |   ├index.htm(ホームページなど)   ├...   ├...   |   └cgi-bin(CGI用のフォルダ)    ├...    ├...    └...

次に、テキストエディタもしくはメモ帳を開きます。
上記のサンプルを1字1句間違えないように入力して下さい。

入力し終わったら、「cgitest.cgi」という名前で先ほどの「cgi-bin」というフォルダ内に保存してください。

注意)ほとんどのプロバイダがCGIを実行するフォルダを「cgi-bin」と指定しています。
ただ、プロバイダによっては指定が無かったり(どこでもOK)、別のフォルダの場合もありますのでこれも必ず確認してください。

ここを間違えると、実行できません。
(iswebは「cgi-bin」です。)

■ CGIの実行

上記のCGIが準備できたら、まず、ローカルでテストしてみましょう。
手順は次の通りです。

【実行方法】
  1. HTTPDを起動します。
  2. ブラウザを起動し、アドレスに「http://127.0.0.1」と入力します。
    ホームページが表示されます。
  3. 次に、アドレスに「http://127.0.0.1/cgi-bin/cgitest.cgi」と入力します。
    画面に「CGIのテスト」と表示されます。

どうですか、うまく表示されましたか?

もし、表示されないようでしたら、以下のことをチェックしてみましょう。

  1. 上記「2.」のホームページは正常に表示されますか?
    表示されない場合は、「2.サーバー環境の構築」での設定が間違っています。

ホームページが表示されるのにCGIの結果が表示されない場合は、以下の確認をしてください。

  1. 2.サーバー環境の構築」での設定が間違っていないか。
  2. 上記サンプルの記述に間違いがないか。
  3. ホームページのあるフォルダ内に「cgi-bin」フォルダがあるか。
  4. 「cgitest.cgi」がその「cgi-bin」フォルダ内にあるか。
  5. 「cgitest.cgi」の名前が間違っていないか。

2.サーバー環境の構築」は、以下のことを確認をしてください。

  1. Perlのインストール後にパソコンを一度は再起動しておいて下さい。(念のため)
  2. 4.のPerl実行プログラムに指定した場所にperl.exeが存在するか?
  3. 5.の「/cgi-bin」フォルダの前のチェックマークが外れているか?

【補  足】

「CGIのテストを実行するとダウンロードになってしまう。」という質問が
時々あります。
HTML形式ならうまくいくが、テキスト形式だとうまくいかないというものです。

ひとつの原因としてわかってるものに、拡張子「.cgi」テキストエディタに関連付けてしまい、CGIファイルをダブルクリックするとテキストエディタが開いてしまう。というものです。

この場合、次のような方法で解消できることがあります。

  1. Win95、Win98の場合
    マイコンピュータを開き 表示/オプション/プログラム/ファイルタイプ で、CGIを選び、編集で内容の種類(MIME)text/plainにする。
  2. Me、2000、XPの場合
    マイコンピュータを開き 表示/オプション/プログラム/ファイルタイプ で、CGIを選び、削除してみる。

どうしてもうまくいかない場合は、CGIテストの代わりに次のようなCGIでテストしてみてください。

「text/html」に変更し、HTML文書に見せかける

【サンプル1】
#!/usr/bin/perl print "Content-type:text/html\n\n"; print "CGIのテスト";

BODYタグで挟み、HTML文書にする

【サンプル2】
#!/usr/bin/perl print "Content-type: text/html\n\n"; print "<HTML><BODY>\n"; print "CGIのテスト"; print "\n</BODY></HTML>\n";

page update:2012/05/15 18:07

Copyright (c) 2000-2009, all Rights Reserved & Produced by atom