戻る FAQ エラーメッセージからのトラブル解決

 エラーメッセージからトラブル内容を推測し、解決策を探るページです。
ここに無いメッセージが表示されましたら、そのCGIプログラムとその存在場所をお教えいただければ調べて、解決し、ご報告させていただきます。

500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, root@ann.co.jp and inform them of the time the error occurred, and anything you might have done that may have caused the error.

解決1 perlの存在場所指定が間違っている時にでます。
 CGIプログラムの1行目の記述を #! /usr/bin/perl として下さい。
 良くあるのがCGI学習書に書かれている #! /usr/local/bin/perl のままでは本メッセージがでます。

解決2 外部スクリプトを呼べない時にでます。
よく使われる外部スクリプトに"jcode.pl"と"cgi-lib.pl"があります。
1)#require "jcode.pl"; といったように先頭にコメントを表す#が付いていませんか?
付いていればとってください。
2)スクリプト名が間違っていませんか?たとえばjcode.plをjcd.plとしているとか、JCODE.PLといったように大文字小文字の区別をしていなかったりしていませんか?

参考)外部スクリプトのしくみ
require "jcode.pl"; と書くことでjcode.plスクリプトを参照することができるようになり、 &jcode 'convert(〜 と書くことで漢字コード変換スクリプトを実行することができるようになります。
require "cgi-lib.pl"; と書くことでcgi-lib.plスクリプトを参照することができるようになり、 &ReadParse; と書くことで実際のスクリプトが実行されることとなります。

解決3 CGIプログラムの改行コードがCRLFの時に出ます。
 CRLFのままだと、UNIX系OS(Linuxを含む)のサーバ上ではCGIがエラーを起し、 動作しない。改行コードをLFに変換してご利用ください。

403 Forbidden

Forbidden

You don't have permission to access CGIプログラム名 on this server.
パーミッションの設定で権限が無い時にでます。
CGIプログラムをサーバーに転送するだけではだめで、パーミッションを変更する必要が有ります。
Telnet接続でのパーミッションの変更が必要です。

404 File Not Found

File Not Found

The requested URL CGIプログラム名 was not found on this server.

アドレスが間違っているため、指定したアドレスには存在しない時にでます。
アドレスを再度確認する。アップロードしたつもりが実際されていないのかもしれません。

些細なことだが重要なこと
1)大文字と小文字の区別
 Perlは大文字と小文字を区別します。jcode.plをJCODE.PLと書くと違うファイルと判断します。
2)半角と全角の区別
 日本語は全角文字で表現しますが、スクリプトプログラム部分は半角英字としてください。
3)#が付いたその右側はコメントとして扱います。
 #require "jcode.pl"; はコメント行となってしまいます。
 $nen = 20; # 年齢を入れる は#の右側がコメントとなります。