• 締切済み

CGIが機能しなくなってしまいました。

お願いします。 あるサイトのcgiを利用して掲示板を作成しました。(画像投稿可能) 20回ぐらいまでは問題なく投稿できていたのですが、突然 下記エラーメッセージしか表示されなくなってしまいました。 cgiは勉強中なため自分なりに調べてみたのですが、どうしてもわからず 質問させていただきました。どのような原因が考えられるのか、また 対処方法をアドバイスいただけたらありがたいと思います。 ご教授よろしくお願いいたします。 line 476の記述: ($x,$y) = unpack("x6 vv",$buf); ---------------------------- Software error: x outside of string at lib/cgi/bbshtml.pm line 476. For help, please send mail to the webmaster --- ----------------------------

みんなの回答

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

とりあえず open(FILE,"$file"); ← open に失敗してたりしませんか? binmode(FILE); read(FILE,$buf,10); ← 10バイト読めてますか? close(FILE); if (!defined $buf) {return;} ($x,$y) = unpack("x6 vv",$buf);###←line 476### open はファイルのオープンに失敗した場合にはundef を返しますのでそれをチェックしてください。 CGIでなければ open FILE, $filename or die $!; とかやるんですけど。 httpサーバのログが見られるのならこれをそのままでも良いです。 readの方も、読み込んだ文字数が戻り値で返ってきているので、 10バイト読めているか確認してください。 $cnt = read FILE, $buf, 10; if ($cnt < 10) { die "読み込みがなんか変"; } という感じで。

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

質問文にある情報だけでは、$bufの内容がおかしいとしかいえません。 どういった経由でここまでくるデータなのでしょうか?

archico
質問者

お礼

早速のご回答ありがとうございます。 下記のようになっておりますが、いかがでしょうか? また不足点などあればご指摘ください。 *********************************** ディレクトリ構成: ***(ホームページディレクトリ) | |-bbs(掲示板ディレクトリ) | | | |-bbs.cgi(掲示板トップページ) | |-lib | | | | | |-cgi | | | | | | | |-bbshtml.pm | | | | | | | | *********************************** bbshtml.pm line 476の含まれるカテゴリです。 getgif_size { my $self = shift; my ($file) = @_; my $buf; my ($x,$y) = undef,undef; open(FILE,"$file"); binmode(FILE); read(FILE,$buf,10); close(FILE); if (!defined $buf) {return;} ($x,$y) = unpack("x6 vv",$buf);###←line 476### return($x,$y); }

関連するQ&A