コマンドプロンプトやコンソール、ブラウザでCGIの実行結果がうまく表示されない場合の理由はいくつか考えられます。
まずはこれまでの設定の確認をしていきましょう。
もし「表示はされたけど文字化けしてる!」という場合は下記の章をご覧になってみてください。
(日本語を敢えて使っていない段階では)これはほとんどないと思います。ちょっと難しいという場合は、もっとCGIに慣れてきてからあとでご覧になるといいと思います。
パスの設定違い
#!/usr/bin/perl
#!/usr/local/bin/perl
...etc.
※パスはウェブサーバの環境に依存するのでサーバ仕様を確認
・1行目にPerl実行ファイルのパスを記述していない
→ Perl実行ファイルのパスを記述
・1行目のPerl実行ファイルパスにうっかり行終端文字[ ; ]
(半角セミコロン)を入れてしまった
→ 不要な文字を取り除き、正しいPerl実行ファイルパスを記述
・1行目のPerl実行ファイルパスが間違っている
→ 正しいPerl実行ファイルパスを記述
→ # と ! の位置やスペルミスがないかチェック
→ 先頭・末尾などに余計なスペースなどが入っていないかチェック
(Windowsの場合フォルダの区切りは[¥],UNIX/Linuxの場合[/])
(ご利用のサーバの仕様がどこかに記述されていると思いますので再確認)
→ サーバの仕様と一致しているかチェック
→ 正しいスペルでファイルパスを記述
・[use]や[require]で取り込んでいるファイル名やパスが間違っている
→ 正しいファイル名やファイルパスを記述
・[use]や[require]で取り込んでいるファイルが存在しない
→ 存在するファイル名を記述
→ 必要なファイルを入手
→ スクリプトと同じディレクトリに対象ファイルをコピーして試してみる
・モジュール(一般的な拡張子[.pm])ではないスクリプトファイル
(一般的な拡張子[.pl]「.cgi」)を[use]で取り込もうとしている
→ [use]ではなく[require]で取り込む
・モジュールやプラグマ(拡張子[.pm]または拡張子省略)を
[require]で取り込もうとしている
→ [require]ではなく[use]で取り込む
・取り込むモジュールやスクリプトファイルをダブルクォーテーションで
括ってしまった
→ [ダブルクォート]ではなく[シングルクォート]にする
・[use]や[require]行の行終端のセミコロンを忘れている
→ セミコロンを付加する( require xxx.pl; )
・content-typeの記述が間違っている
・content-typeの最後または別途\nを1つ追加するのを忘れている
(content-typeの後に\nが計2つ必要)
例)
print "content-type: text/html; charset=utf-8\n\n";
または
print "content-type: text/html; charset=utf-8\n";
print "\n";
・サーバ仕様で実行可能なスクリプトの拡張子として含まれていない
→ 拡張子を[.pl]または[.cgi]に変更して実行してみる
・コマンド行の行終端のセミコロンを忘れている行がある
→ セミコロンを付加する( print "xxx\n"; )
・シングルまたはダブルクォーテーションが対になっていない(記述漏れ)
→ 正しくペアにする
・[ print ]関数など関数名のスペル違い
[print] ←×全角になっている
[pirnt] ←×スペルが違う
[PRINT] ←×大文字になっている
...etc.
スクリプトファイルのあるディレクトリでperl、スペースに続けてファイル名を入れて実行してみる
例) [ perl xxx.pl ]
・指定したスクリプトファイル名が存在しない
または作成したperlスクリプトファイルがないディレクトリで実行している
→ スクリプトファイルのあるディレクトリに移動して実行してみる
・Perlのパスが通っていない
→ [ パス名 + perl + スクリプトファイル名.拡張子 ]で実行してみる
例) [ /usr/bin/perl xxx.pl ]
・作成したファイルに実行パーミッションビットを許可していない
→ 確認して実行パーミッションビットを許可してから実行する
例) [ chmod u+x xxx.pl ]
・カレントディレクトリのパスが通っていない
→ 1つのドット・ピリオドとスラッシュに続けてファイル名で実行してみる
例) [ ./xxx.pl ]
→ 【非推奨】カレントディレクトリを環境変数PATHに追加する
再確認した上でもし表示されなかった場合には、CGIファイルの権限を設定してあげる必要があります。
ファイルアクセス権限の許可設定はパーミッション設定ともいいます。
・パーミッションの設定が正しくない
→ perlスクリプトファイルのパーミッション設定を確認
(FTPやターミナルエミュレータ等でサーバ側のファイルを確認する事)
(ご利用のサーバ仕様によりますが、[700][705][755]に設定)
あなたの作成したCGIファイルに対して
・読み取る権限
・書き込む権限
・実行する権限
を
・USER →ファイル作成者
・GROUP→Webサーバ上の同じスペースを共有している人
・OTHER→その他のみんな
に許可設定をパーミッション設定ともいいます。
(ブラウザで実行の場合)
上記チェックをしてもどうしてもうまくいかない場合
・Perl実行パスに[半角スペース]に続けて[--](ハイフン2つ)を加え、
#!/usr/local/bin/perl --
としてみる。
この設定はまだ少し難しいかなぁと思われる方は、思いきってブラウザで表示するのは後回しにしちゃいましょう。
再確認ができたあなたの記述したプログラムが原因ではないことは、わかったのですよね。
いくつかCGIスクリプトをつくってあとで解決する事にしましょう。
根詰めたり、時間をかけすぎたりすることはあなたの目にも頭にも精神的にも決してよくありません。
思い切って割り切ることは大切で勇気がいることです。
そしてあなたにはその勇気があるはずです。
もちろん以降の章を順を追ってご覧頂ければ、クリアできますので安心してくださいね。