Q&A

1.メモ帳で*.cgiというファイルを作ろうとするのですが、 *.cgi.txt となってしまいます。

答え: (1)保存時に、ファイルの種類をすべてのファイル、としましたか?

(2)それでも駄目なときは、windowsにcgiという 拡張子が登録されていないせいです。マイコンピュータから表示を 選び、オプション ー> ファイルタイプで拡張子を追加してください (タイプの説明も関連付けられた拡張子もcgiと入力)。

2.ftpでどうしてもアップロードできず、サーバ上の古いファイルが 更新されないのですが。

答え: TidyFTP に不具合があるようです。オプションー>オプション ー>プログラム でローカルファイルのダブルクリックのアップロードを 指定します。すると以後、ローカルファイルをダブルクリックすると アップロードできるようになります。

3.サーバ上のcgiプログラムが実行できないのですが。

答え: いろいろなケースがあります。

・ファイルやディレクトリが実行可能になっていますか?システムの 管理者はそこのディレクトリでcgiを動かすことを許可していますか?

・文法エラーはとれていますか? telnetで確かめてください。

・cgiプログラムをアスキーモードでサーバにアップロード しましたか? バイナリモードですと動かないときがあります。

・どこまでは動くのか、プログラムの文を簡単なものから複雑なものに 変えていって確かめてください。最も簡単なperlプログラムは動きまし たか?

・cgiプログラムで自動的にサーバ上にテキストファイルなどを 作るとき、そのディレクトリが書き込み禁止になっていることが あります。

4.契約したプロバイダーがcgiを動かすことを禁じているのですが。

答え: 頼んでみてだめなら、プロバイダを換えるか、cgiを動かすとき のサーバを別に借りるかですね。例えばお勧めは、

花いちネット(信州大CRC 創業支援企業)

このサーバはアメリカのデラウェア州にあるそう です。

5.プロバイダがtelnetの使用を許していないのですが。

答え: ハッカーが多いので、殆どの日本のサーバはtelnetの使用 を許していません。上記のようなアメリカのサーバを使うのがいいでしょう。 ただ、webで起動し、結果をwebで確かめる方法もあります(デバッグは あまり自由にできませんが...)。それはブラウザで、URL欄に 直接cgiプログラム名を書いてやればいいのです。

しかし、cgiプログラムの方には

   #!/usr/bin/perl
   print "Content-type: text/html\n\n";

   print 23+34;

のように、 #!/usr/bin/perl と Content-type: text/html\n\n の2行をおまじないのように、つけておかなければいけません (1行目はサーバの中のperlシステムのある場所を表します)。

このようにすると、telnetがなくてもperlプログラム を起動し、その結果をブラウザに表示できます。ただし、エラーメッセージ を表示できません。

あるいは次のような起動用のhtmlページを作っておき、 それを表示させて、送信ボタンを押してもOKです(以下、ブラウザに より<」が&ltと表示されているかもしれません)。

   <HTML>
   <HEAD>
   <TITLE>起動用</TITLE>
   </HEAD>
   <BODY>
   <FORM METHOD="POST" ACTION="/www--/test.cgi">
       起動します
   <P><INPUT TYPE="SUBMIT" VALUE="送信">
  </FORM>
  </BODY>
  </HTML>

6.どうしてもホームページからcgiプログラムを起動できない のですが。

答え: telnetでは動かせたとすると、perlプログラム の方に5.の「おまじない2行」が欠けていませんか?

あるいは、ホームページの存在するディレクトリとcgiプログラム の存在するディレクトリの相対的な位置関係の関係で、 ACTION= 以下のcgiプログラム名の指定が違っていませんか?

ホームページの方のその他の個所もチェックしてください。