• 締切済み

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 --- ----------------------------

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

みんなの回答

  • 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

  • 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
  • YahooジオシティーズのCGIメールフォーム使用

    yahooジオプラスにおいて Software error: 接続失敗 at ./lib/io-socket.pl line 57. For help, please send mail to this site's webmaster, giving this error message and the time and date of the error. とCGIメールフォームを設置したまではよかったのですが、送信を押すと上記エラーが出てしまいます。これはyahooジオプラスがそもそもソケット通信を禁止しているためか、それともSMTPサーバ側の(Dionとyahooフリーメールを試しました)問題なのか、どう思われますか? お力をおかしください。よろしくおねがいします☆ ちなみにメールフォームは ttp://www.kent-web.com/data/postmail.html です。

    • ベストアンサー
    • 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
  • cgi-libを使って変数値渡しをしたいのですが

    cgi間の変数渡しの質問をしたのですが、うまくいかなかったので、調べてみると、 cgi-lib.pl'を使うことで簡単に値を渡せるということが分かりました。 ですが、 use lib '/home/www'; require 'cgi-lib.pl';# cgi-lib.plを呼び出す $test=1000; # 変数値渡し? form_input_post.cgi?name=$test; &ReadParse(*in); として、$testの値をform_input_post.cgiに渡そうとしたのですが。 コンパイルエラーが出てしまいました。 Can't modify constant item in scalar assignment at form_input_post.cgi line 49, near "$test;" syntax error at form_input_post.cgi line 49, near "$test;" form_input_post.cgi had compilation errors. というエラーです。 初歩的なミスな気がしますが原因がわからないので教えて頂きたいです。 よろしくお願いします。

    • 締切済み
    • CGI
  • cgi-lib.plのShort read~というエラーについて

    perlで画像掲示板の作っています。今まで特に問題なかったのですが、突然投稿する際に、「Short Read:1370,got 0」というエラーが表示されるようになってしまいました。 cgi-lib.plをrequireしているので、その部分を読んではみたのですが、どういったエラーなのかがわかりません。 cgi-lib.plの解説ページなどもみたのですが、cgi-lib.plがどういったものかということを説明するものばかりでエラーについては探しても見つからなかったのでこちらに投稿しました。 このエラーがどういったもので、どのように対処すればよいかご存知の方がいらっしゃいましたら、ご回答をよろしくお願いします。

    • ベストアンサー
    • CGI
  • すみません、先ほど質問したsyuutyakuです。

    すみません、先ほど質問したsyuutyakuです。 postmailの設置なのですが、色々試しているうちに、http://*****.sp.****.to/postmail/postmail.html という感じで、ご感想の送信フォームにリンクしたのですが、そこで適当に記入し、送信ボタンを押し、確認画面がでたあと、またボタンを押したら、最後の最後で Software error: 接続失敗 at ./lib/io-socket.pl line 57. For help, please send mail to the webmaster (webmaster@land.to), giving this error message and the time and date of the error. となってしまいました!(泣) これはどういう風にしたらなおるのでしょうか?どなたか教えてください。よろしくお願いします。

    • ベストアンサー
    • CGI
  • Jcode.pmについて

    ネット上からダウンロードしてきたCGIプログラム内で、Jcode.pmを使用しているようなのですが、サーバ にUpしたところ、以下の様なエラーが表示されました。 ※1 Can't locate Jcode.pm in @INC (@INC contains: /usr/lib/perl5/5.6.1/i386-linux /usr/lib/perl5/5.6.1 /usr/lib/perl5/site_perl/5.6.1/i386-linux /usr/lib/perl5/site_perl/5.6.1 /usr/lib/perl5/site_perl .) at access/accview.cgi line 68. ※2 BEGIN failed--compilation aborted at access/accview.cgi line 68. ちなみに、accview.cgi line 68には use Jcode; と書かれていました。 エラーの原因として、何がありますか? また、その解決法を教えていただきたいです。

    • ベストアンサー
    • Perl
  • CGIでの500エラー

    CGIサイトを作成中の者です。 CGIをサーバーに転送して動作確認をしたらサーバーエラーになってしまいます。 サーバーに問い合わせて、以下が原因でエラーになっていることはわかりました。 Unrecognized character \x90 at ./miuinit.pl line 100. Compilation failed in require at miumgr.cgi line 11. でもCGI初心者なので、”\x90”が何をさすのか、2番目の文ではどこを直せばいいかわかりません。 サーバー会社では自分でCGIを修正せよとのことです。 よろしくお願いします。

    • ベストアンサー
    • CGI
  • CGIがエラーになります。

    Kento Webさんで配布されているCGI「Shopping Cart」が Software error: Can't call method "param" on an undefined value at ./lib/menu_list.pl line 310. となり動きません。 **** 経緯 **** これまでは、自宅サーバーCentos6.5で運用していましたが、先日Centos7に入れ替えました。(/var/www/配下はそのまま使用) ・OSインストール後 ・SELinuxの無効化 ファイアウォール停止 ・yum -y install httpd (httpdインストール) ・yum -y install php php-mbstring (php、php-mbstringインストール) ・/etc/httpd/conf/httpd.conf (httpd設定ファイル編集)   Options Includes ExecCGI FollowSymLinks (CGI,SSIの許可)   AllowOverride All (.htaccessの許可)   AddHandler cgi-script .cgi .pl (CGIスクリプト.cgi .plの許可) ・ln -s /usr/bin/perl /usr/local/bin/perl (リンクをはる) この状態で確認するに「Shopping Cart」を含め他のCGIも動きません。 Internal Server Error  BEGIN failed--compilation aborted at  End of script output before headers ネットをググってみるにCGI.pmがインストールされていないようなので ・yum -y install perl-CGI その後確認するに、「Shopping Cart」はNGだが他のCGIはOKとなりました。 「Shopping Cart」のエラー Software error:  Can't call method "param" on an undefined value at ./lib/menu_list.pl line 310. 「Shopping Cart」と一緒に配布されている、「check.cgi」での動作チェックは、CGI.pmインストール前は、Internal Server ErrorでしたがCGI.pmインストール後全てOKとなりました。 パーミッションの確認も行いましたが間違いは無いようです。 よろしくお願いします。

    • 締切済み
    • CGI
  • cgiが動きません・・・

    初めて質問させていただきます。 動かしたいcgi:http://jam.apricot.co.jp/affiliate/aws/netamazon.html        (このcgiを改造して、出力項目を増やし、適当な区切り記号の         csvファイルとして保存しようと思っています。) 場所:xrea.com(仕様は http://www.xrea.com/?action=spec) 行った手順:  1.cgiソースをテキストエディタにコピペ、「browse.cgi」としてFTP。   属性を755に。  2.Script Errorが出たので、http://www.execweb.cx/~appoh/soft/check.htm   のperlチェッカーを使用してチェック。すると、   「Can't locate Net/Amazon.pm in @INC ~at ./browse.cgi 行番号 10.」   との結果。該当行のNet::Amazonモジュールが無いと判断。  3.http://net-amazon.sourceforge.net/ より、Net-Amazon-0.29.tar.gzを   ダウンロード。解凍後、libフォルダ内のNetフォルダ以下を全て   browse.cgiと同じ場所にFTP。Net内の「Amazon.pm」の属性を755に。  4.同じくperlチェッカーを使用してチェックすると、   「Can't locate Log/Log4perl.pm in @INC ~at Net/Amazon.pm     行番号 19.」   との結果。   http://log4perl.sourceforge.net/ より、Log-Log4perl-0.48.tar.gzを   ダウンロード。解凍後、libフォルダ内のLogフォルダ以下を全て   先程のNetフォルダ内、Amazon.pmと同じ場所にFTP。「Log4perl.pm」の   属性を755に。  5.4とエラー内容が変わらず、「Can't locate Log/Log4perl.pm in @INC    ~at Net/Amazon.pm 行番号 19.」の表示。その後、Amazon.pmと同じ   階層に直接Log4perl.pmを置いてみたりしましたが、エラーメッセージは   変わりませんでした。 根本的に間違っているのでしょうか・・・ 是非ご教授いただければ幸いです。何卒宜しくお願い致します。

    • ベストアンサー
    • Perl

専門家に質問してみよう