電子書籍の厳選無料作品が豊富!

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.

A 回答 (4件)

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という
ものがあります。参考まで。
    • good
    • 0

構文チェックは通っても、バグを含んでいれば当然実行時エラーになります。


Perlで実行してエラーを探した方が早いと思いますよ。
    • good
    • 0

見当違いならごめんなさい。


apacheの設定ではcgiスクリプトはpublic_html以下のcgi-binディレクトリにおくようになっているはずですが、エラーメッセージを見るとpublic_html以下にsubsub.cgiやokikae.cgiがあるように見えるのですが。。。これは正しいのかな?
    • good
    • 0

エラーを見る限り、jcode.pmとcgi-lib.plが呼べていないように見えます。


ちゃんとアップロードされてますか?

アップされている場合は、パスが間違っていないかどうか調べてみてください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!