- 締切済み
文法はあってるのにサーバーエラーが出る
perlで構文チェックをしたところ、OKが出たので、 アパッチにて実行したところサーバエラーがでました。 調べたところ、以下のようなエラーが出ましたが、これは、サブルーチンや、ライブラリが呼出されていないのでしょうか?どのように対処すればいいか教えてください。 Premature end of script headers: c:/www/public_html/subsub.cgi Undefined subroutine &jcode::convent called at c:\WWW\PUBLIC~1\SUBSUB.CGI line 8. Premature end of script headers: c:/www/public_html/okikae.cgi Can't locate cgi-bin.pl in @INC (@INC contains: C:/usr/local/lib C:/usr/local/site/lib .) at c:\WWW\PUBLIC~1\OKIKAE.CGI line 3.
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- Head_Syndicate
- ベストアンサー率64% (73/113)
CGIプログラムはcgi-binの下になければならない、とは限りません。Apacheの設定によります。 「Can't locate ...」などはまぎれもなくPerlが出しているエラーメッセージ でしょう。ですから、サーバはCGIとして実行しようとはしていると思われ ます。 koujinさんもうすうすお分かりのように、jcode.plやcgi-bin.plがみつから ないんですね。それらのファイルがカレントディレクトリもしくは @INCのところで示されているようなパスに存在しないのではないですか。 もし、例えばc:/www/public_html/lib/の下など別のディレクトリに jcode.plをまとめよう、としているのでしたら、 use lib qw(C:/www/public_html/lib); としてそれを@INCに含めるようにしたりすれば良いでしょう。 ひょっとしたらどこかからのサンプルを使ってsubsub.cgiやokikae.cgi を書いたところでしょうか。だとしたら足りないjcode.plやcgi-bin.pl をどこかから手に入れて(WWWの世界にごろごろしています)ください。 これらはPerlの標準配布には含まれていませんので。 なお、もうcgi-bin.plはずいぶんと古い時代のものですね。最近は CGI.pmを使うのが普通かと思います。(これはPerl5に最初から 含まれています) jcode.plに対しても、最近はJcode.pmという ものがあります。参考まで。
- leaz024
- ベストアンサー率75% (398/526)
構文チェックは通っても、バグを含んでいれば当然実行時エラーになります。 Perlで実行してエラーを探した方が早いと思いますよ。
- acky
- ベストアンサー率31% (182/583)
見当違いならごめんなさい。 apacheの設定ではcgiスクリプトはpublic_html以下のcgi-binディレクトリにおくようになっているはずですが、エラーメッセージを見るとpublic_html以下にsubsub.cgiやokikae.cgiがあるように見えるのですが。。。これは正しいのかな?
- taba
- ベストアンサー率61% (349/567)
エラーを見る限り、jcode.pmとcgi-lib.plが呼べていないように見えます。 ちゃんとアップロードされてますか? アップされている場合は、パスが間違っていないかどうか調べてみてください。