• 締切済み

文法はあってるのにサーバーエラーが出る

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.

  • CGI
  • 回答数4
  • ありがとう数2

みんなの回答

回答No.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という ものがあります。参考まで。

  • leaz024
  • ベストアンサー率75% (398/526)
回答No.3

構文チェックは通っても、バグを含んでいれば当然実行時エラーになります。 Perlで実行してエラーを探した方が早いと思いますよ。

  • acky
  • ベストアンサー率31% (182/583)
回答No.2

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

  • taba
  • ベストアンサー率61% (349/567)
回答No.1

エラーを見る限り、jcode.pmとcgi-lib.plが呼べていないように見えます。 ちゃんとアップロードされてますか? アップされている場合は、パスが間違っていないかどうか調べてみてください。

関連するQ&A

  • Perl で syntax error

    Perlを勉強中です。 ローカル環境(Win98 / Apache)でCGI(Perl(5.6.))をテストしようとすると、下記のようなエラーメッセージが出ます。 Premature end of script headers: c:/www/public_htm/up_file.cgi String found where operator expected at c:\WWW\PUBLIC~1\UP_FIL~1.CGI line 59, near "open INDD1, "$indd1"" syntax error at c:\WWW\PUBLIC~1\UP_FIL~1.CGI line 58, near "open(INDD1, "$indd"" Execution of c:\WWW\PUBLIC~1\UP_FIL~1.CGI aborted due to compilation errors. 多分、ファイルのopen定義が間違ってるような感じなんですが、SOURCEと1日にらめっこしてても、どうにもこうにも解りません・・・ よろしくお願いします。 === SOURCE CODE ================ open(INFILE, "$indd") || die "can't open : $!"; open(OUTDD1, ">$outdd1") || die "can't open : $!"; ※ OUTPUT file のほうは、エラーになってないみたいなのに・・・ ※ いちおう、簡単なCGI(メッセージの表示)は、実行できます。

  • script headers って?

    NO.202703の質問をしたものです。 1.Premature end of script headers: c:/www/public_htm/up_file.cgi 2.String found where operator expected at c:\WWW\PUBLIC~1\UP_FIL~1.CGI line 59, near "open INDD1, "$indd1"" 3.syntax error at c:\WWW\PUBLIC~1\UP_FIL~1.CGI line 58, near "open(INDD1, "$indd"" 4.Execution of c:\WWW\PUBLIC~1\UP_FIL~1.CGI aborted due to compilation errors. 2.3.4.のエラーについては、解決?できました。 (エラー行をコメント(#)にしたりしてるうちに・・・原因はよくわかりませんでしたが・・・) 1.のエラーの意味がわかりません。  script headers って何のことなんでしょうか? ※ このエラーログはApacheのサーバーのログです ※ このCGIは、フォームデータを受けっとてファイルを更新するようになっています。

    • ベストアンサー
    • Perl
  • Server error! Error 500

    RedHat7.3, apache-2でCGIが動くようにしたいのですが、 httpd.confをいじったりいろいろやってるのですが Server error! Premature end of script headers: tmp.cgi Error 500 と言われてしまいます。 Object not found!(Error404)ではないのでcgiファイルがあることは認識されてるようですが、 ”早すぎる終わり”をどうやったら回避できますか? 教えてください。

  • Can't locate R.pm in @INC

    perl初心者でまた質問させていただきます。 CGIを作っているのですが、R.PMが使えなくて困っています。 USE R; とすると、以下のようなエラーが出てしまいます。 Can't locate R.pm in @INC (@INC contains: /usr/lib/perl5/5.10.0/x86_64-linux-thread-multi /usr/lib/perl5/5.10.0 /usr/lib/perl5/site_perl/5.10.0/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.10.0 /usr/lib/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.10.0 /usr/lib/perl5/vendor_perl .) at /srv/www/htdocs/cgi/ringo.cgi line 5. BEGIN failed--compilation aborted at /srv/www/htdocs/cgi/ringo.cgi line 5. Premature end of script headers: ringo.cgi そこで、 locate R.pm で、場所を探しました。 /usr/lib/perl5/5.10.0/x86_64-linux-thread-multi/R.pm ということで、 use R '/usr/lib/perl5/5.10.0/x86_64-linux-thread-multi/'; このように変えてみたものの、同じエラーです。ちなみに、CGIではなく、PERLのプログラムからだと、use R;で動作することは確認しました。 よろしくお願いします。

    • 締切済み
    • CGI
  • パスがうまく通らない

    Check.pmが  o:\public_html/post_pervice/cgi/lib にあります。 このモジュールを利用するために以下のようなプログラムを書きました。   #! /usr/bin/perl -w   use CGI::Carp qw(fatalsToBrowser);   unshift @INC, "o:/public_html/post_service/cgi/lib";   print join "\n",@INC;   use Check; この中の  use Check; をコメントで伏せて動かすと、   o:/public_html/post_service/cgi/lib   O:/usr/site/lib   O:/usr/lib のような表示がなされるので、  unshift @INC, "o:/public_html/post_service/cgi/lib"; はちゃんと機能しているようです。 しかし  use Check; のコメントを外して動かすと、   Can't locate Check.pm in @INC (@INC contains: O:/usr/site/lib O:/usr/lib .) at O:\public_html\post_service\cgi\showINC.pl line 8.   BEGIN failed--compilation aborted at O:\public_html\post_service\cgi\showINC.pl line 8. のようなエラーが出てしまいます。 何がいけないのでしょう。

    • ベストアンサー
    • Perl
  • Apache WebサーバでCGIが実行できない

    Apache WebサーバでCGIを実行すると Premature end of script headers というエラーになります。原因が判りません。何方かご教示をお願いします。

  • perl niftyについて。use CGI;

    画像アップロードのスクリプトを作ろうと思っているのですが、 use CGI; という記述をすると、ここでエラーに引っかかります。 下はperl checkerでのエラー表示です Can't locate CGI.pm in @INC (@INC contains: /usr/local/lib/perl5/5.00503/sun4-solaris /usr/local/lib/perl5/5.00503 /usr/local/lib/perl5/site_perl/5.005/sun4-solaris /usr/local/lib/perl5/site_perl/5.005 .) at a.cgi line 10. BEGIN failed--compilation aborted at a.cgi line 10. 参考URLはここ http://www.topstudio.co.jp/~kmuto/html/node38.html niftyでは使えないようになってしまっているのでしょうか? また、CGI.pmを使わないファイルアップロードの仕組みを解説しているサイトを知っている方がいたら、教えてくださいませ。

    • ベストアンサー
    • CGI
  • CGIエラー

    アクセス解析のCGIを設置しようとしてるのですが、動作確認の際に、以下のエラーが出ます。 The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are: Can't locate config.pl in @INC (@INC contains: C:/Perl/lib C:/Perl/site/lib .) at C:\daishin_www\cgi-bin\access\accview.cgi line 83. CGIを設置するのはこれが初めてなので、このエラー文が何を言いたいのか、どこを直せば動くようになるのか、ぜんぜんわからずに困っています。 どなたか教えて頂けませんか? サーバーは自社サーバーでWindowsです。

    • ベストアンサー
    • CGI
  • Image::Magickが突然動作しなくなってしまったので解決策を

    MovableTypeを今まで使用して、画像のサムネイル作成などをおこなっていましたが、突然下記のようなエラーが出るようになってしまいました。 「Internal Server Error・・・・・・・ Apache/1.3.33 Server」 MovableTypeのmt-check.cgiを実行したところ、 このようなメッセージがでます。 「オペレーション・システム: freebsd  Perl のバージョン: 5.6.1  (おそらく) cgiwrap もしくは suexec が有効になっています  Image::Size  サーバには Image::Size がインストールされていました。(バージョン: 2.93).  Image::Magick  サーバには Image::Magick がインストールされていました。(バージョン: 6.2.0).」 MTの他にも、Image::Magickを使ったCGIが動作しません。 サーバーのエラーログをみると、このようなものがありました。 「Can't load '/usr/local/lib/perl5/site_perl/5.6.1/i386-freebsd/auto/Image/Magick/Magick.so' for module Image::Magick: Shared object "libMagick.so.8" not found at /usr/local/lib/perl5/5.6.1/i386-freebsd/DynaLoader.pm line 206. at /usr/local/apache/htdocs/●●.cgi line 1213 Compilation failed in require at /usr/local/apache/htdocs/●●.cgi line 1213. BEGIN failed--compilation aborted at /usr/local/apache/htdocs/●●.cgi line 1213. [Thu Jan 19 11:48:02 2006] [error] [client 210.172.143.2] Premature end of script headers: /usr/local/apache/htdocs/●●.cgi 」 ●●.cgi line 1213 の部分には、use Image::Magickがあります。 今まで、問題なく動作していたので、原因がわかりません。 サーバの設定が突然かわってしまうようなことがあるのでしょうか? また解決策をご存知でしたらぜひよろしくお願いいたします。perlのバージョンは5.6.1です。

    • ベストアンサー
    • Perl
  • Can't locate...

    こんにちは。Perl初心者で、 ネット上のPerlのサンプルプログラムを動かそうとしましたが 以下のようにエラーがでて実行できません。。 Can't locate Lingua/JA/Romanize/Japanese.pm in @INC (@INC contains: ./ /usr/local/lib/perl5/5.00504/i686-linux /usr/local/lib/perl5/5.00504 /usr/local/lib/perl5 /site_perl/5.005/i686linux /usr/local/lib/perl5/site_perl/5.005 .) at object.cgi line 4. BEGIN failed--compilation aborted at object.cgi line 4. これはどういったエラーで、どうすれば解決しますか。 教えてください。

専門家に質問してみよう