慣れないCGIに挑戦していると、普段ネットサーフィンなどしている時と比べて、やたらとエラーメッセージに遭遇します。例えば・・・、
これらのエラーは、一見、同じようでいて、それぞれにきちんと理由があります。 |
「なんでぇ、エラーかよぉ」と、簡単に投げ出したり、サポートに駆け込む前に、そのエラーの意味を汲み取れば、その原因に辿りつくことができるでしょう。
(エラーくん(仮称)クリックでそれぞれに飛びます)
Not Found ページがみつかりません URLが間違っていないか再度ご確認ください。URLは大文字・小文字を区別します。 |
ページが見つかりません 検索中のページは、削除されたか、名前が変更されたか、 HTTP 404 - ファイル未検出 |
@homepageでの表示例 | 他サイトにて、IEでの表示例 |
≪概要≫
上図右側のIEでの表示例は、今までも見たことがあるんじゃないでしょうか。これの@homepage版と思えばいいでしょう。
例えば・・・、
http://homepage1.nifty.com/typhoon/ないっての.html とか、
http://hpcgi1.nifty.com/typhoon/ないんだってば.cgi など、
HTMLかCGIかに関係無く、アクセス権に拘らず、@homepage内に存在しないファイルを呼び出したときに、「ウチにゃあそんな名前のヤツは居ないよん」と、言ってるメッセージなわけです。てことで、CGI設置の際にこのメッセージに出会うケースとしては、
≪原因≫
- 設置したCGIを呼び出すURLのパスや綴りを間違えた(大文字/小文字にも注意)
- CGIをFTP転送するのを忘れてた(わははは)
- CGIが自分自身を呼び出す設定の中で、そこに記入したURLと実際のCGIの置き場所が違う
- またはCGIのファイル名を変えたのに、その設定箇所を変更するのを忘れた
- CGIのデフォルト設定を自分用に書き換える際に、http://hpcgi1.nifty.com/typhoon/cgi-bin/***.cgi などと、余計な/cgi-bin/部分を残してしまった(>自分だ)
- 例えばCGIからホームページに戻る時など、@homepageの仕様によって、URLフルパスで呼ばなければいけないのに相対パスで呼び出した
などなど、いずれもイージーなケアレスミスに過ぎないわけですが、他に覚えることや変更箇所が沢山あるだけに、意外と「灯台元暮らし」的に見落としがちなものです。
- なお、メッセージには「混雑のため〜〜」ともありますが、テレホタイムのピークでもない限り、リロードしてみてなんとかなる可能性は低いようです。
Forbidden 閲覧できません このページはホームページ開設者が閲覧することを許可していないため、
|
このページの表示が認められていません このディレクトリを表示する権限がないか、または提供された HTTP エラー 403 - アクセス不可 |
@homepageでの表示例 | 他サイトにて、IEでの表示例 |
≪概要≫
さて、これこそCGIの設置に深く関わってくる部分で・・・、
今まで滅多に見たことなかったのに、CGIに手を出したその日から、嫌と言うほど何度もお目にかかるのがこのメッセージでしょう。
エラーはエラーですが、少なくとも、「そこにそのファイルが存在する」ことの証明でもあり、前項目よりは一歩前進、「けど見せてあげにゃーい」という状況のようです。
出現パターンとしては、メインであるパーミッションの問題の他に、@homepage仕様として、
http://hpcgi1.nifty.com/typhoon/index.html や、
http://hpcgi1.nifty.com/typhoon/error.gif などと、
/cgi-bin/配下に置いたHTMLやGIFファイルをブラウザから読みにいった場合や、
http://hpcgi1.nifty.com/typhoon/ などと、
/cgi-bin/配下のディレクトリリストを取りに行った時などに出るようです。
(この場合のみ、index.cgiの有無は関係なし)≪原因≫
まずは、CGI添付の設置例通りにやると必ず引っ掛かる、@homepage特有の仕様に関わる点で、
- ブラウザから読みに行くのHTMLやGIFファイルを、/cgi-bin/配下に置いて呼び出そうとした
それ以外でこのエラーが出たら、それはよくあるパーミッション(属性)の問題でしょう。
- 設置したCGIファイルに実行権(755など)を与えてない
- FTPしただけでパーミッションの設定を忘れた(わははは)
これしかありません。
特にMacのFTPソフトFetchなどの場合は、パーミッションが数値指定ではなかったりで勘違いが多いようですが、FTPソフトのHPなどで、「属性の変更」のやり方に十分に習熟しておく必要があります。
当サイトでは、FTPソフトの使い方の解説・サポートはしません。
Server Error サーバエラー このメッセージが表示された場合は、混雑のため負荷が高くなっていることがあります。
|
@homepageでの表示例 |
≪概要≫
このメッセージにはあまりお目にかからないかも知れませんが、他のサイトで言うとやはり「403 Forbidden」に該当するような内容で、前項の兄弟分と言えるでしょう。
このエラーメッセージのタイトル及び説明書きは、原因究明には役立ちそうにないですね
出現例としては、
http://homepage1.nifty.com/dream.cgi のように、
/homepage/の方にCGIを置いて実行しようとした時や、
http://homepage1.nifty.com/images/ のように、
/homepage/ディレクトリの方で"index.html"を置いてないディレクトリで、ディレクトリリストを取りに行ったときなどに出るようです。これらのケースに限り、ファイルの存在の有無に関係なく、問答無用でこのエラーメッセージを出すようです。
≪原因≫
まあ、そんなわけです。(あ、飽きたなこいつ(笑))
- 【ディレクトリリスト】とは、時折他のサイトで見掛けるもので、"index.html"などを省略してディレクトリ名でアクセスすると、デフォルトファイルである"index.html"を置いてないディレクトリで、その中のファイル一覧が「Index of ...」などと、エクスプローラーのように表示されてしまうものです。
ホームページ作成の入門書などでは、それを避ける為に「各ディレクトリにはダミーの"index.html"ファイルを置いておこう」などと書いてありますが、どうやら@homepageでは、その心配はないようです。
ちなみに、hpcgi?サーバーの方のデフォルトファイルは"index.cgi"だそうです。
実行エラー CGIの実行時にエラーが発生しました。 |
ページが表示されません 検索中のページには、問題があるため、表示できません。 HTTP 500 - 内部サーバー エラー |
@homepageでの表示例 | 他サイトにて、IEでの表示例 |
≪概要≫
このケースは、CGIファイルが途中で実行不可能となったなどで異常終了し、ブラウザが読める形での結果を返せなかった時に出るようです。
CGIの改造や、自作に挑戦するようになると、やけにお世話になる機会が増えるようです。
そう、これが、CGI作者のサポートルームではイヤというほど交わされる、ISE (Internal Server Error)です。
- @nifty開始当初は、@homepage専用のメッセージが用意されておらず、上記右側のようにブラウザが出すエラー表示だったのですが、いつの間にか、専用のメッセージが用意されたようです。
≪原因≫
- スクリプト1行目「#!usr/local/bin/perl」のパス指定を間違えた
- CGIファイルをバイナリ(RAW)モードで転送した
- 「jcode.pl」のパス指定、または転送場所を間違えた、または転送忘れ
- CGIファイルや「jcode.pl」の解凍の失敗、または転送の失敗
あとはほとんどが単純なCGIスクリプトの書き換えミス、例えば、
# スペシャル機能を(使う=1、使わない=0)
$special_func = 1;などというカスタマイズ項目設定の欄で、
# スペシャル機能を(使う=1、使わない=0)
$special_func = ;と、数値指定部分を空白にしてしまったり、
# スペシャル機能を(使う=1、使わない=0)
$special_func = 1と、文末の ";"(セミコロン)をうっかり削除してしまった場合など、単純にPerlの文法エラーで異常終了し、上記のエラーが出るようです。
もちろん、文法エラーですから、原因はこれだけではなく、様々なケースがあります。
とりあえず、「書き換えミスの潰し方」というページも書いてみましたが、根本的には、「Perl 超・基礎講座」などから少しずつ、Perlの作法に慣れて行くのがいいでしょう。
ERROR: <<Can't Open Logfile!>>
ERROR: <<Can't Write Logfile!>>
ERROR: <<Can't Open Tempfile!>> ≪概要≫
などなど、スクリプトによって、原因によって、様々なパターンがあるわけですが、これらはあくまで、「CGIスクリプトが用意したメッセージ」なわけで、これらのメッセージが出たということは、「CGIスクリプトとしては正常に起動/終了した」とも言えるワケです。ここまで来れば後一歩、ゴールは近いでしょう。
≪原因≫
CGIスクリプトの場所/パーミッションまでOKとなれば、あとは、
ログファイル、テンポラリファイル、過去ログファイル、カウントファイルなどの、
- 置き場所がCGIファイル内に記述した指定と合っているか
- ファイルのパーミッションが、読み書き可能になっているか
- その置いてあるディレクトリのパーミッションは
- /homepage/の下に置いたファイルに書き込みに行くのにURLで指定していないか
- 自動で作成されない空ファイルなどをちゃんと作成して転送したか
- FTPの際の転送モードを間違っていないか
(FTPソフトによっては、"*.cgi"は自動でアスキーモード転送されるものの、"*.log"や"*.dat"などについては定義されていないものです)などなど、エラーとされたファイルについてトレースしていくことです。
特に注意すべきは、ログや画像やHTMLなどの各ファイルが、
- CGIが吐き出したHTMLファイルの中でブラウザが見に行くもの
→多くの場合/homepage/側に置いて、http://からのURLフルパス指定- CGIがその内部でだけ読み書きしているもの
→多くの場合CGIと同じ場所に置いて相対パス指定という風に、CGIの動作を理解して配置、設定していく必要があります。
アクセスカウンタなどで、CGIが<IMG SRC= 〜 ***.cgi>などと画像ファイルとしてページに埋め込んである時には、何かエラーがあっても、ブラウザ上では上記のようなエラーメッセージが確認できません。
その場合には、カウンタ部分のURLを直接呼び出すことで、どんな状況かが確認ができるでしょう。
また、チェックモードを搭載しているCGIもありますので、設置マニュアルはくまなく読みましょう。また、「エラーメッセージは特に出ないけど、フレームだけで中身がない」などは、そのままブラウザから「ソースの表示」で、フレームを構成しているそれぞれのページを直接呼び出してみると、HTMLレベルの間違いに気付くケースが多いようです。
また、いろいろと試行錯誤するうちにいじくり過ぎて、「自分でもどこをいじったのかわからなく」なったり混乱して来た場合には、初心に戻って、ダウンロードしたままの状態から、最低限の変更を一歩ずつ進めて行った方が、ゴールが近いケースも多いようです。
さて、いかがだったでしょうか。これで「よくあるエラー」に関しては、ほとんどが自力で潰せるはずです。
「初心者なんで、なんかよくわかんないけどエラーが出ます」
なあんて漠然とした質問では、たとえCGI作者でも答えようがありません。
まずは、自力更生、自助努力を目指すことが、CGI習得の近道と言えるでしょう。