| 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」を入力してください。
|
|