CGI トラブルシューティング Q & A
CGI スクリプトの一般的な問題に対する解決策を Q&A 方式で下記に挙げておきます。

(Q):  CGI プログラムを起動させると、 「Internal Server Error. The server encountered an internal error or misconfiguration and was unable to complete your request.」が表示されます。

(A):  これは概して CGI スクリプト内の問題が原因です。問題をよく把握するために、SSH(Telnet) でログインし、ローカルモードでそのスクリプトをテストする必要があります。ディレクトリ内に入って、そのスクリプトを実行してみてください。以下のどちらかの方法で実行できます。
 1 ) 「perl myscript.pl」と入力します。
または
 2 ) 「myscript.pl」だけを入力します。最初の1行が perl の位置を正しく表示している場合に限り、この操作はうまくいきます。

 スクリプト内部のエラーを見るには、(1) の方法が便利です。「calling line」(スクリプトの1行目)が問題ないなら、つまり perl の位置が正しく入力できたなら、(2) の方法が便利です。

 3 ) 「perl -cw myscript.pl」と入力すれば、perlの文法チェックが行われ、問題となっている部分が明らかになります。

(Q):  「File NotFound」または「No Such File or Directory」のエラーが表示されます。

(A):  perl または CGI のスクリプトをバイナリーモードではなく、ASCII モードでアップロードしてみてください。


(Q):  (SSH/Telnetを使用して)ローカルモードで perl スクリプトをテストするときに、次のエラーが表示されます。「Literal @domain now requires backslash at myscript.pl line3, within string. Execution of myscript.pl aborted due to compilation errors.」

(A):  これは perl の誤まった解釈が原因です。 perl では「@」は特別な意味を有します。
つまり、「@」は配列(要素表)と認識されるのです。perl が「domain」と名付けられた配列を見つけられないので、エラーが生じます。
バックスラッシュ「\ 」を「@」マークの前に置いて、「@」が、電子メールアドレスに見られるように、普通のマークであることを perl に認識させてください。


(Q):  「POST not implemented」というメッセージが表示されます。

(A):   おそらく cgiemail にふさわしくないレファレンスを使用しているのでしょう。
別の可能性としては、cgi-bin ディレクトリにまだ置かれていない cgi-bin スクリプトが原因かもしれません。このメッセージの一般的な意味はこうです。
つまり、ウェブサーバは、ユーザーが呼び出している cgi-bin スクリプトをプログラムとして認識していない、むしろ、通常のテキストファイルと考えている、ということなのです。


(Q):  「I don't have permission to access」と表示されます。

重要 :
CGI スクリプトは、必ず、ASCII 形式でアップロード・ダウンロードしなければなりません。
また、保存するときも、ASCII 形式(「.cgi」や「.pl」など)でなければなりません。このことはとても重要です。
このガイドラインに従わない場合、プログラムは作動しません。


(Q):   I don't have permission to access」と表示されます。

(A):  このエラーメッセージの意味は、「index.htm」ファイルがありませんということです。


注意事項
「.」で始まるファイルは、隠しファイルです。隠しファイルを見るには、「ls -al」を入力してください。

Back To Index

Copyright © レンタルサーバー W3Lab Co., Ltd. All rights reserved.