始める前に・・・

まずここを確認してください

あなたのプロバイダは、CGIの使用を許可していますか? 入会するときに、すでに調べてあるのなら問題はありませんが、 まだ調べていないのならばすぐに確認してください。
●CGIの使用を認めているか。>
認めていないのならば、CGIを使えるプロバイダに変更するしか方法はありません。ただし、制限付きでならということで、交渉に応じてくれる場合もあります。
●ユーザーが制作したプログラムを使用してもよいか。
CGIの使用を限定的に認めているプロバイダもあります。カウンターやイメージマップなど、プロバイダで用意したプログラムしか使えない場合は、自作のプログラム、またはフリーウエアなどで配布されているプログラムを使うことはできません。
●SSIは使えるか。
SSIの使用はさらに限定されると考えていいでしょう。CGIは認めていても、SSIは使えないというプロバイダは多いものです。SSIが使えない場合は、CGIプログラムの使用法が異なる場合があります。
●ついでにSHELLは使えるか。
これはtelnetという方法で、サーバにログインできるかどうかということです。CGIプログラムの動作を確認するのに、使えると便利です。使えなくても、プログラムの設置は可能です。

この他にもプロバイダによって細かい決まりがあることがあります。例えばCGIファイルの拡張子やディレクトリ名が決められている場合などです。これは各プロバイダで確認するしかありません。プロバイダのホームページに書かれていたり、FAQなどに同じ質問が出されているかもしれませんから、確認してみましょう。

サーバの管理者にメールで直接問い合わせてもよいのですが、大きなプロバイダになると返事がなかなか来ないことも予想されます。このような一般的な質問はたいていどこかに書かれているものですから、探した方が早いでしょう。

さらにこんなことも調べておくと便利です
●Perlのパスとバージョン。
CGIのプログラムはPerlやshなどという言語で書かれています。現在はPerlが主流のようです。PerlのパスはCGIプログラムを書くときに必要になってきます。また、配布されたプログラムを、自分のサーバに合わせて設定するときなどにも必要です。sh、sendmailなど、CGIで使うパスはその他にもありますが、これらはtelnetが使えれば、いちいちプロバイダに問い合わせなくても調べることができます。telnetを許可していないプロバイダでは、メールなどで確認してください。
Perlのバージョンによって文法が少し違いますから、自分のプロバイダで使われているPerlのバージョンも調べておくとよいでしょう。
●サーバのOSは何か。
UNIXマシンをサーバに使用しているところが多いのですが、OSによって設定に違いが出る場合があります。OSの違いによる固有の設定までは、プログラムの配布元ではフォローしきれませんので、もし、他プロバイダで動いているプログラムが動かない場合は、OSの違いも疑ってみましょう。また、WWWのソフトウェアによっても設定が変わってきますので確認してください。
●ローカルでプログラムを確認する。
CGIのプログラムをいきなりサーバで試すのは、じつは危険な行為なのです。CGIはプロバイダのサーバに少なからず負担をかけるものです。もし、間違ったプログラム(無限ループなど)をサーバで走らせてしまうと、サーバを壊しかねません。
CGIプログラムをローカル環境、つまりデスクトップで確認する事ができる方法を紹介しているサイトがあります。たいへん丁寧に説明してありますので、初心者の方でも簡単にできると思います。
●ついでにSHELLは使えるか。
これはtelnetという方法で、サーバにログインできるかどうかということです。CGIプログラムの動作を確認するのに、使えると便利です。使えなくても、プログラムの設置は可能です。

前のページに戻るgarage CGI TOPへ戻る

Apache1.3以降への対応
Apacheは現在広く使われているwwwサーバですが、1.2から1.3へのバージョンアップに伴い、一部のCGIの動作が変わりました。 サーバの管理者からバージョンアップのアナウンスがあった場合は、CGIプログラムの動作テストを行ってください。 以下に代表的なエラーへの対処法をあげました。
●CGIプログラムが動作しなくなった場合
いままで正常に動いていたプログラムが動作しなくなった場合、.htaccessというファイルを作成してください。 メモ帳やシンプルテキストのようなエディタに以下のように書くだけです。
Options All
これはCGI、SSI両方の使用を許可するコマンドです。 もちろん、サーバがCGI、SSIの使用を許可しているのが前提ですが。
ちなみに、CGIだけを動作させる場合は
Options ExecCGI
SSIだけの場合は
Options Includes
となります。

また、SSIが使えなくなった場合は、SSIのコマンドを置いてあるファイルの拡張子を.shtmlに変えてください。 デフォルトの設定では、htmlからSSIのコマンドを使うことはできなくなっています。または

AddType text/x-server-parsed-html .html
この1行を.htaccessに加えれば、htmlファイルでもSSIを使うことができますが、 そうするとSSIを使っていないhtmlファイルに対してもSSIを使っているかどうか スキャンしにいってしまい、サーバに負担をかけてしまいます。 すべてのhtmlファイルにSSIを使っているのでなければ、 ファイル名を変更するほうをおすすめします。

.htaccessはふつう、public_htmlに置きますが、特定のディレクトリだけでSSIやCGIを使うときは そのディレクトリに置くこともできます。
なお、Windowsのようにドットから始まるファイルが作れない場合には .htaccessファイルには適当な名前を付けておいて、サーバ上に転送してから名前を変更してみてください。

●REMOT_HOSTが使えなくなった場合
REMOTE_HOSTは環境変数の一種で、通信先の相手のAPを示すものでした。 これもデフォルトでは使えなくなっています。 動作が重くなりますので、アクセスログなどでどうしても必要な場合以外は、あまり必要ではないコマンドですが、 どうしてもという場合は以下のようにすれば同じような動作が得られます。
$remote_addr = $ENV{'REMOTE_ADDR'};
$remote_host = gethostbyaddr(pack('c4',split(/\./, $remote_addr)), 2) || $remote_addr;
これで$remote_hostにAPが代入されます。
print LOGMEMO "リモートホスト...............$ENV{'REMOTE_HOST'}\n";
となっている箇所を
print LOGMEMO "リモートホスト...............$remote_host\n";
のようにして使います。

前のページに戻るgarage CGI TOPへ戻る

CGIファイルの設置

ファイルの転送(FTP)
まず、ファイルの転送の前に、プロバイダ固有の規約がないか確認してください。拡張子が決められている、cgi-binなど特定のディレクトリに入れる指定、サーバに載せる前にプロバイダ側のスクリプトのチェックが必要な場合など、様々なケースが考えられますので必ず問い合わせてください。>

このサイトで紹介しているものはすべてPerlで書かれたスクリプトです。プロバイダにPerlのパス(CGIスクリプトの最初の1行)を確認しましょう。デフォルトの「#!/usr/local/bin/perl」で動作することが多いのですが、プロバイダが指定している場合はそれに従ってください。

また、プロバイダによっては、Perlのバージョンによってパスが変わる場合があります。ここのスクリプトは一部でバージョン5を使っていて「#!/usr/local/bin/perl5」としなければ、動作しないプロバイダもあります。 動作しない場合はメールなどでお問い合わせください。

CGIファイルも通常のファイルと同様にFTPソフトでサーバに送れますが、必ず、ASCII(テキスト)モードにすることを忘れないでください。CGIのスクリプトが書かれたファイルと、記録に使うログファイルはASCII(テキスト)モード、その他のHTMLや画像ファイルはBinary(バイナリ)モードで転送します。

●パーミッション
ただし、これもプロバイダによって多少の違いがある場合がありますので、確認した方がいいでしょう。数字が違う場合や、ディレクトリそのものにパーミッションを付けなければいけない場合など、また、スクリプトの種類によっては「.htaccess」という初期設定用のファイルを作らなければならない場合も考えられます。
できたら同じサーバの先輩達のHPを見て、どのようなスクリプトを使っているか、参考にさせてもらったりするといいでしょう。同じ物でもサーバによって動作したりしなかったりということはよくあることです。
パーミッションはFTPソフトで設定することができます。FTPソフトはいろいろあるので、ここでは代表的な物の例をあげておきます。
●CuteFTP(WIN)
  1. パーミッションを付けたいファイルを左クリックして反転させます。
  2. メニューバーの「コマンド」→「カスタムコマンド」→「ファイルアクセスマスクを変更」を選択して、ダイアログを開きます。
    (英語版の場合は「Commands」→「Custom Commands」→「Change Files Access mask」)
  3. パーミッションの数字を入力します。
  4. メッセージボックスに「・・・200 CHMOD command successful」と表示されれば成功です。
●WS−FTP(WIN)
  1. Remote Systemのウインドウで、パーミッションを付けたいファイルを左クリックして反転させます。
  2. 右クリックして「FTP Commands」→「SITE」を選択してダイアログを開きます。
  3. chmod ファイル名 数字」と入力して「OK」をクリックします。
    例えば「chmod count.cgi 755」など。
  4. メッセージボックスに「・・・200 CHMOD command successful」と表示されれば成功です。
●Fetch(MAC)
  1. パーミッションを付けたいファイルをクリックして反転させます。
  2. 「Remote」メニューの「Set Permissions」を選びます(Fetch. 2.XにはSet Permissionsがないので3.0以降を使用してください)。
  3. 例えば755の場合は
      Read Write Search
    Execute
     
    User(u) 0111=7
    Group(g)   0101=5
    Everyone(o)   0101=5
    とチェックして、「OK」をクリックします。
  4. 666の場合は
      Read Write Search
    Execute
     
    User(u)   0110=6
    Group(g)   0110=6
    Everyone(o)   0110=6
    とチェックして、「OK」をクリックします。

前のページに戻るgarage CGI TOPAtelier H TOP

Copyright1999-2008©Atelier H All rights reserved