■=Perl, ■=結果
はじめに
PerlやCGIを動作させることは、どのサイトでもできるわけではありません。ご自分の属するサイトがPerlやCGIを許可しているかどうか調べてください。もし許可されていなくても、あきらめる必要はありません。私のこのページは、無料でホームページを持て、しかもCGIが使える infoseek isweb を利用しています。他にもいくつかあるようですのでお調べください。
私が最初にinfoseek iswebに登録した時は、金曜日でしたので月曜日に登録完了のメールが届き、その日からPerlを動作させることが可能となりました。通常は翌営業日か中一日で登録が完了すると思います。登録からCGIのテストまでの経緯を更新履歴に記しておきました。
次に調べる事
CGIを置くディレクトリは限定されているか
どこのディレクトリにおいてもOKのサイトや cgi-bin というディレクトリを作成して、その下に置かなければ動作できないsightなどがあります。infoseek isweb は後者ですので、サイトにFTPソフトでアクセスしたら、すぐに cgi-bin という名前のディレクトリを作成してください。
Perlのパスはどこか
通常は /usr/local/bin/perl ですが(infoseek iswebも同様)、サイトにより異なる場合がありますので、確認しておいてください。この記述が違っているだけで、Perlがエラーとなってしまいます。
#!/usr/local/bin/perl とPerlスクリプトの一番最初の行に #! マークをつけて記述します。
FTPホスト名(アドレス)は
infoseek isweb では iswebxx.infoseek.co.jp で xx の部分がサーバ毎に異なっています。ホームページのURLやFTPホスト名、ユーザー名、パスワードは infoseek isweb からの「登録完了のお知らせ」に書いてあります。
Perlのバージョンは
サーバにインストールされているPerlのバージョンはいくつかを調べます。そのバージョンによって使えない関数もありますので確認しておいてください。ちなみに infoseek isweb は perl5 となっています。
サイトに送る前に
先ず、Perlを記述したらPCで正常に動作できるかどうかテストしましょう。まだ、あなたのパソコンでPerlが動作できるようにしていなのでしたら、「WindowsでPelrを動かすには」を参考にして、いくつかのソフトウエアをインストールしてください。
CGI作成から公開までの手順は次のようになります。
1.PCでCGIの動作テストを行う
2.正常に動作できたら、FTPソフトでサイトにアップロードする
3.FTPソフトでCGIのパーミッションを変更する
4.その他使用するファイルのパーミッションを必要に応じ変更する
5.CGIのURLから直接実行させるか、テスト用のページ(本番のページからリンクすると、まだエラーの状態なのに訪問者がアクセスしてしまうかもしれませんので)からリンクし実行させる
6.エラーや思うような結果が得られなければ、原因を考え修正等する
7.正常に動作できたら、本番のページからリンクさせる
サイトに送ってテスト開始
サイトに送る前に必ずテストをして、正常に動くことを確認してからサイトにアップロードするようにしてください。直接サイトで動作テストを始める事は止めてください。スクリプトがエラーとなって止まってしまうだけでなく、記述ミスでスクリプトが止まらなくなってしまうかもしれません。サーバに大きな負荷をかけ、多くの方に迷惑をかけることになってしまうかもしれませんので。
パーミッション
パーミッション(permmision)、属性。多くのサーバのOSはUNIXですが、UNIXではファイルのパーミッションを各々のファイル毎に設定することができます。そのことにより、「自分だけが読み書きし、他の人は読むだけにさせる」などのことができます。WEBでCGIを動かすには、このパーミッションを[実行できる]ように設定しなければなりませんせん。インターネットでCGIを実行するには、[その他]の使用者が実行できるようにするケースが普通です(一部のプロバイダでは、異なるようですのでご注意ください)。
ではパーミッションについてもう少し説明をしましょう。
パーミッションは wrxwrxwrx のようにアルファベットの wとrとxで表記される他、777や606などのように3桁の数字で表現します。777は wrxwrxwrx、606は rw----rw- で現され、アルファベット3文字ごとに左から、[オーナー]、[同一グループ]、[その他]の所有者の属性を表現しています。
・[w]はそのファイルに対して書き込むことができる
・[r]は読むことができる
・[x]は実行させることができるの意味です。
[x]には1、[w]は2、[r]は4が当てはめられます。
| 記号 | 数字 | 意味 |
| r | 4 | 読む |
| w | 2 | 書く |
| x | 1 | 実行 |
| 記号 | 数字 | 意味 | 計算式 |
| rwx | 7 | 読む&書く&実行 | 4+2+1=7 |
| rw- | 6 | 読む&書く | 4+2+0=6 |
| r-x | 5 | 読む&実行 | 4+0+1=5 |
下に一般的なファイルのパーミッションについて記しておきます。ただインターネットでは[その他]使用者になるわけですから、[同一のグループ]はゼロでも問題はないと思います。
| ファイルの種類 | 数字 | 記号 |
| HTMLファイル、テキストファイル、画像など 読むだけのファイル | 644 | rw-r--r-- |
| CGIスクリプトなど実行するファイル | 755 | rwxr-xr-x |
| 読み書きするデータファイル | 666 | rw-rw-rw- |
| 左を分解すると |
|
通常ファイルを新規にアップロードすると644(rw--r--r--)になっているはずです。
一度パーミッションを設定すれば、ファイルを修正してFTPソフトで再度送りなおしても、同一のファイル名なら以前のパーミッションは変わりません。
今までパーミッションの説明で9桁のrwxで現していましたが、正確には10桁で、先頭の一桁がディレクトリかどうかを現しています。
すべての所有者が読み書きが可能なファイルは -rw-rw-rw-
オーナーだけが読み書き実行ができ、同一グループとその他の所有者が読みと実行が可能なディレクトリーは drwxr-xr-x となります。先頭の一桁が "-" の場合はファイルを、"d" の場合はディレクトリーを表しています。
最後に
実際にサイトで動作させて、エラーとなることがあります。その理由には多くのことが考えられます。
・スクリプトが元から誤っていてエラーとなる
・CGIの実行権が誤っている
・CGIを読み出すURLそのものが誤っている
特に最後のURLは注意が必要です。infoseek iswebの場合には、外部から直接CGIを呼び出しても、エラーとなるように設定されています。要するに、他のサイトからinfoseek iswebのCGIだけを使用することを禁じているのです。必ずinfoseek iswebのサイト内のHTMLなどから、そのCGIを呼び出す(リンクする)ようにしてください。
主なHTTPのエラー番号を書いておきますが、これだけでは殆ど原因を特定することは難しいです。
| 403 | 実行権がパーミッションに与えられていない |
| 404 | URLが誤っている |
| 500 | スクリプトが誤っている スクリプトをバイナリモードで転送している そのサイトで使用禁止の命令を実行しようとしている その他 |
PCで正常に動作することが確認されているなら、データの転送方法、パーミッション、URLの誤りを疑ってみてください。実行しているファイル以外に、書き込み用のデータファイルを使用しているなら、そのファイルが[その他]の権限で書き込み可になっているかなどの確認も必要です。
| | Back | Coco's Home | ココとPerlで遊びませんか | |