« mail-entry.0.5.1公開します | メイン | 風邪、ひきました »

2004年10月02日

cgiのエラー内容をブラウザで確認するには

何かとエラーに見舞われることの多いmail-entry。そのエラーも、普通のサーバーではブラウザに「Internal Server Error」と表示されるだけで何とも手の施しようがないと思います。

TELNETでアクセスできれば、シェルから実行するとエラーの原因が表示されるので解決しやすいのですが、TELNETを許可してくれているサーバーというのはあまりありません。

こちらで予測できるエラーについてはmail-entryでエラー表示をしているのですが、モジュール不足の場合など、どうにもならないシーンもあります。でもエラーが出るのって、モジュール不足の時が大半なんですよね・・・

なんとかエラー内容を出力できないものかと調べていたら、いいCGIが見つかりました。CGIROOMさんで公開されているチェックCGIです。ダウンロードページのサイト補助のところに、エラーチェックという名前で公開されています。

使い方は簡単で、他のCGIにするようにPerlのパスを設定して、エラーチェックをしたいCGIのファイル名を設定します。mail-entryであれはmail-entry.cgiですね。設定画面すら出ないのであればmail-entry-config.cgiとします。そしたら、サーバーのmail-entryのディレクトリへコピーして、ブラウザから実行します。

エラーがあれば、Perlが出力するエラーメッセージがそのまま表示されます。英語ですけれど、プログラミング経験のある人ならすぐに理解できるでしょう。理解できなくても、たいていエラーの発生した行番号が書いてありますから、それを参考にすれば何となく分かってきます。

モジュールが足りない場合は、モジュール名+拡張子pmとともに、モジュールがあるかどうかPerlによって調査されたディレクトリが列挙されて表示されます。MIME::Parserなどは、Parser内部で使用するモジュールが足りないこともよくあり、Parser.pm内での行番号が表示されたりもします。

どうにも分からなければ、エラーメッセージとともにコメントしてみてください。確実なお返事はお約束できませんが、出来る限りのことはしたいと思っています。ただ、最近返事が遅れ気味なので、インターネットのPerl系サイトをひたすら調べて回った方が早い場合もありそうですが・・・

投稿者 osho : 2004年10月02日 09:38

トラックバック

このエントリーのトラックバックURL:
http://www.mobile-bozu.com/mt/mt-tb.cgi/239

このリストは、次のエントリーを参照しています: cgiのエラー内容をブラウザで確認するには:

» mail-entry.cgi に挫折 orz from 京ぽんでモブログ
 Movable Type に京ぽんで書き込みをしようと頑張っていましたが、普通... [続きを読む]

トラックバック時刻: 2005年03月13日 21:22

コメント

mail-entry.0.5.1導入を試みております。
メールからの投稿で、mail-entry.cgiを実行すると
HTTP 500 - 内部サーバー エラーとなります。
しかし、MTへは、きちんとエントリされてはいます。
ImageNagickを使った画像の縮小等も問題なくエントリされてます。


本日、CGIROOMさんで公開されているチェックCGI
check.cgiを試してみました。
メールが無い場合も、メールがある場合も
mail-entry.cgiを直接実行した場合と変わらず、
それぞれ
「メールはありませんでした。」
「HTTP 500 - 内部サーバー エラー
Internet Explorer 」
となり、エラーメッセージは表示されませんでした。
でも、エントリはされてます。
何でだろ?

サーバーはxreaの広告免除サーバーです。
MTは、2.661です。
出力ファイル(アーカイブ)をhtmlからphpに変えてます。

以上、参考にしていただければ

投稿者 pony : 2004年10月05日 03:40

ponyさん、はじめまして。

500番台のエラーが出てるのに、ちゃんとエントリーされているというのがなんとも不思議ですね・・・実行すら出来ない場合に500エラーは出るものだと思っていたのですが。

私もXREA(広告表示有り)ですが、普段はScript Errorしか見かけません。mt.cgiで再構築するときにも出るので、これはきっとタイムアウトかなにかだと思います。でも一発でエントリーは完了しています。これも不思議と言えば不思議。
収容サーバーによる仕様の違いが原因でしょうか。

出力ファイルをphpにした場合については未検証です。検証する予定も今のところありません。mail-entryは投稿内容を表示する単純なHTMLをブラウザに渡しているだけなので、それが原因でエラーが起こるとも考えにくいです。でも思いもしないところでエラーが出るので関係ないとは言い切れないですけれど。

それにしても、せっかくチェックCGIを見つけて喜々としていたのですが、さっそく使えない場面が出てくるとは・・・

投稿者 osho : 2004年10月05日 08:42

oshoさん、はじめまして。
mail-entry重宝させていただいています。

Xreaにてmail-entry.0.5.1導入にあたり、
s23サーバにて、導入に成功いたしました。

調子に乗りまして、
s45サーバへも、導入を試みましたが、「Script Error」が・・・
cgiをcgidへリネームし確認したところ
--------
argv[0] = 'cgiwrapd'
Executing '/virtual/hogehoge/public_html/tchoukball.jp/mt/mail/mail-entry.cgid'
Output of script follows:
=====================================================
opendir(/virtual/hogehoge/public_html/tchoukball.jp/mt/mail//../../../../..): Permission denied at /usr/lib/perl5/5.6.1/FindBin.pm line 162
opendir(/virtual/hogehoge/public_html/tchoukball.jp/mt/mail//../../../../..): Permission denied at /usr/lib/perl5/5.6.1/FindBin.pm line 163
Can't locate MT.pm in @INC (@INC contains: ./extlib ./lib /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/5.6.0 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.6.1/i386-linux /usr/lib/perl5/vendor_perl/5.6.1 /usr/lib/perl5/vendor_perl .) at /virtual/hogehoge/public_html/tchoukball.jp/mt/mail/mail-entry.cgid line 68.
BEGIN failed--compilation aborted at /virtual/hogehoge/public_html/tchoukball.jp/mt/mail/mail-entry.cgid line 68.
--------
というエラーが吐き出されます。
mail-entry.cgi Ver.0.4.0-test4が動いていたので、自分の設定の問題かとも思いましたが、
他のサーバでは、うまくいっていますので、もしかすると、サーバ側の問題なのかなと・・・
何が問題なのかいまひとつ理解できず・・・・御助力願えませんか??

投稿者 はぢめ : 2004年10月05日 09:37

はぢめさん、はじめまして。

XREAって、拡張子変えるとエラーを出してくれるんですね。知らなかった・・・便利だぁ

現象としては、
http://www.mobile-bozu.com/weblog/archives/000239.html#261
のejimacさんと同じと考えられます。カレントディレクトリの取得がうまくいっていないようです。10月1日21:23付けの対処法を試してみてください。

また、できましたら
#!Perlのパス
use FindBin;
print "Content-type: text/html;?n?n";
print $FindBin::Bin, "?n";

というスクリプトを、サーバーにコピーし、アクセス権は755で実行してみてください。これは単純にカレントディレクトリを表示するだけのものです。同じエラーが出るのであれば、サーバーの問題になると思います。
(文字コードはShift-jis、改行コードはLFで、s29サーバーで正常に動作することを確認しました)

投稿者 osho : 2004年10月05日 09:52

oshoさん、素早い回答ありがとう御座います!
もう少し、コメントをしっかり捜索するべきでしたね。申し訳ありません。

mail-entry.cgiのほうは、おかげさまで、エラーも出ず、
無事「メールはありませんでした。」と出てくれました。
(後ほど、メールを送信して動作確認いたします。)

FindBinのカレントディレクトリを表示する件ですが、
実行したところ、真っ白。
cgiをcgidにリネームし実行したところ
--------------
opendir(/virtual/tchoukball/public_html/tchoukball.jp/mt/mail//../../../../..): Permission denied at /usr/lib/perl5/5.6.1/FindBin.pm line 162
opendir(/virtual/tchoukball/public_html/tchoukball.jp/mt/mail//../../../../..): Permission denied at /usr/lib/perl5/5.6.1/FindBin.pm line 163
Content-type: text/html;
--------------
となりましたので、サーバー側のようですね。
Xreaに問い合わせを入れてみます。

投稿者 はぢめ : 2004年10月05日 10:21

いえいえ、掲示板と違って探すのはなかなか大変ですから。

さっそく試して頂いてありがとうございます。やっぱりエラーが出ましたか。ejimacさんのほうも同じことなのかなぁ。

投稿者 osho : 2004年10月05日 10:39

参考情報です
カレントディレクトリの取得がうまくいっていない件ですが、
その後、メールを送信し、実際に取り込みを行ったところ、
「作業用ディレクトリ」が見つからない旨エラーが出ました。

mail-entry-config.cgiにて、「公開用画像保存ディレクトリ」「作業用ディレクトリ」を相対参照から絶対参照に替えたところ、
(/virtual/hogehoge/public_html/hogehoge.jp/mt/moblogimages って感じです。)
無事取り込み出来ましたので、御報告いたします。

投稿者 はぢめ : 2004年10月05日 11:09

oshoさん、お返事遅れましてすみません。
>500番台のエラーが出てるのに、ちゃんとエントリーされているというのがなんとも不思議ですね・・・
何故だか?わかりませんが?エントリ自体は正常に行われてますです・・・(^^ゞ

XREAって、拡張子変えるとエラーを出してくれるって
私も知らなかったです。 はぢめ さん、ありがとうです。
さっそくやってみました。

投稿メールがある場合に、mail-entry.cgidを実行してみました。
私の場合は
argv[0] = 'cgiwrapd'
Executing '/virtual/My_ID/public_html/My_Domain.com/mt/mail-entry/mail-entry.cgid'
Output of script follows:
=====================================================
Use of uninitialized value in subroutine entry at /usr/local/lib/perl5/site_perl/5.8.3/i686-linux/Jcode/Unicode.pm line 57.
Use of uninitialized value in subroutine entry at /usr/local/lib/perl5/site_perl/5.8.3/i686-linux/Jcode/Unicode.pm line 57.
Use of uninitialized value in subroutine entry at /usr/local/lib/perl5/site_perl/5.8.3/i686-linux/Jcode/Unicode.pm line 57.
Can't locate MT.pm in @INC (@INC contains: /virtual/My_ID/public_html/My_Domain.com/mt/mail-entry/extlib /virtual/My_ID/public_html/My_Domain.com/mt/mail-entry/lib /usr/local/lib/perl5/5.8.3/i686-linux /usr/local/lib/perl5/5.8.3 /usr/local/lib/perl5/site_perl/5.8.3/i686-linux /usr/local/lib/perl5/site_perl/5.8.3 /usr/local/lib/perl5/site_perl .) at /virtual/My_ID/public_html/My_Domain.com/mt/mail-entry/rebuild_index.cgi line 18.
BEGIN failed--compilation aborted at /virtual/My_ID/public_html/My_Domain.com/mt/mail-entry/rebuild_index.cgi line 18.
Content-type: text/html; charset=SHIFT_JIS

というのが、どうやらエラーらしいです。
rebuild_index.cgi line 18. とありますが、
line 18は、use MT;  ??
すみません、いまひとつ理解できてません・・・・何が原因なのか?御助力願えたら助かります。

私のMT環境(2.661)は、mt.cgi が
/virtual/My_ID/public_html/My_Domain.com/mt でして
MTの「Local Site Path: 」を
/virtual/My_ID/public_html/Sub_Domain.My_Domain.com/blog としてますが

この辺のところが、問題なのかな?
mail-entry.cgi の場所は、
/virtual/My_ID/public_html/My_Domain.com/mt/mail-entry/mail-entry.cgi です。

投稿者 pony : 2004年10月07日 20:39

ちょっと勉強しましたが・・・
Use of uninitialized value
  (W) 未定義値を、あたかも既に定義されているかのように使用しました。
これは、"" か 0 と解釈されますが、間違いの可能性があります。
この警告を止めるには、変数に初期値を代入してください。

Can't locate %s in @INC
  (F) ファイルを do (または、require、use) するように指示されましたが、
@INC で示されるライブラリの中に見つかりませんでした。
おそらく、追加ライブラリの場所を示すために、PERL5LIB 環境変数を指定する必要があるか、
スクリプトの中で @INC にライブラリ名を追加する必要があります。
ファイル名のスペルミスの可能性もあります。perlfunc manpage の require の項を参照してください。

BEGIN failed--compilation aborted
  (F) BEGIN サブルーティンの実行中にトラップ不可能な例外が発生しました。
コンパイルは、即座に停止し、インタプリタは中止します。

との事!しかし私の頭ではわかりませんでした。
もし、何かしらヒントでもございましたらよろしくお願い致します。

投稿者 pony : 2004年10月08日 00:31

oshoさん、誠に申し訳ありません。
上記、エラーは、他のスクリプトのエラーも含まれておりました。
ちょっと時間がとれたため、MTを大幅改造致しておりまして・・
oshoさんのmail-entry.cgiの他にも、スクリプトを同時に導入しようとして、失敗してしまいました。
メール投稿が、ある場合に、mail-entry.cgiを実行した場合のエラーは

Can't locate MT.pm in @INC (@INC contains: /virtual/My_ID/public_html/My_Domain.com/mt/mail-entry/extlib /virtual/My_ID/public_html/My_Domain.com/mt/mail-entry/lib /usr/local/lib/perl5/5.8.3/i686-linux /usr/local/lib/perl5/5.8.3 /usr/local/lib/perl5/site_perl/5.8.3/i686-linux /usr/local/lib/perl5/site_perl/5.8.3 /usr/local/lib/perl5/site_perl .) at /virtual/My_ID/public_html/My_Domain.com/mt/mail-entry/rebuild_index.cgi line 18.
BEGIN failed--compilation aborted at /virtual/My_ID/public_html/My_Domain.com/mt/mail-entry/rebuild_index.cgi line 18.

だけでした。誠にすみませんでした。
また、不必要な投稿を致してしまい、申し訳ありませんでした。
エラーは出るものの、mail-entry.cgiで、投稿はバッチリうまくいってます。
rebuild_index.cgiをもう少し見直してみます。
すみませんでした。

投稿者 pony : 2004年10月08日 07:46

ponyさん、お待たせしました。

えーと。重大ミスです。rebuild_index.cgiでのカレントディレクトリの取得方法を、mai-entryc.cgiに合わせて変更するのを忘れていました。要するに、MTのモジュールが見つけられなくてエラーが出ていると言うことです。あわわわわ。

unshift @INC, $MT_DIR . 'lib';
unshift @INC, $MT_DIR . 'extlib';
の前に、
$MT_DIR = "mt.cgiのあるディレクトリへの絶対パス"
というのを付け加えて試してみてください。すいませんです。

投稿者 osho : 2004年10月09日 11:02

はじめまして。mail-entry使わせていただいております。
私もponyさんのような症状がでていて困っているため投稿させていただきます。
(mail-entry.cgiを叩くと500 internal server errorです)

XREAじゃないですが。。。

$MT_DIR = "mt.cgiのあるディレクトリへの絶対パス"
を挿入してくれってことですが、
mail-entry-config.cgiに表示される
「ブログに関する設定」の「MTディレクトリ:」のパスでよろしいですよね?

それを一応コピペしても解決しませんでした。。。


http://www.prblog.biz/mail-entry/mail-entry.cgi
をF5を連打することで
「500 internal server error」
 ↓
「メールが重複している可能性があります」
 ↓
「メールがありませんでした」
みたいに表示が変わるは変わるんですがね。。。
どうも気になりまして投稿してみました。

投稿者 cyborg_ninja [TypeKey Profile Page] : 2005年01月25日 11:44

たびたびすいません。
CGIROOMさんからは「エラーチェック」というCGI落とせませんでした。。。

投稿者 cyborg_ninja [TypeKey Profile Page] : 2005年01月25日 11:49

cyborg_ninjaさん、初めまして。かっこいい名前ですね〜

ponyさんの時の現象は、現在の0.5.3では解決されています。たぶん。
http://www.mobile-bozu.com/weblog/archives/000285.html
こちらのエントリーの修正を施して、ちゃんとメールがありませんでしたと出る場合は、mail-entryは正常に動作しているように思われます。たぶん。
あとは、rebuild_index.cgiの一行目は変更してありますか?それぐらいしか原因が思いつきません。もしエントリー自体はされているというのであれば、mail-enryの動作が重すぎるのかもしれませんね・・・

ちなみに、cyborg_ninjaさんのサイトにあったリアルタイム更新の件ですが、mail-entryは最後にrebuild_indexを実行しています。でもそれはリアルタイム更新とは関係がないわけで・・・
リアルタイムにするには、メールの到着をトリガーにしてmail-entryを実行するか(.forwardとかで)、cronや同梱のindex.cgiを使って疑似リアルタイム化するしかないようです。

投稿者 osho [TypeKey Profile Page] : 2005年01月25日 21:09

はじめまして。
説明書とおりセットアップし、me-checkではMIME::ParserやImage::Magickもインストールされていますとでるのですが、mail-entry.cgiは以下のようなエラーがでてしまいます。
他の方はエラー500がでてもエントリーはできたとのことですが、自分はエントリーもできていません。
ちなみに自宅サーバー初心者です。そして掲示板など他のCGIは動いています。

Error 500
CGI エラー - Content-Type ヘッダが正しくありません。
CGI 出力メッセージ:
Can't locate Image/Size.pm in @INC (@INC contains: http://***.com/blog/kai/ex tlib http://***.com/blog/kai/lib C:/Perl/lib C:/Perl/site/lib .) at E:\webser ver\public_html\blog\kai\mail-entry\mail-entry.cgi line 73. BEGIN failed--compilation aborted at E:\webserver\public_html\blog\kai\mail-entr y\mail-entry.cgi line 73.

投稿者 kai [TypeKey Profile Page] : 2005年05月15日 13:56

kaiさん、はじめまして。エラーの内容からすると、Image::Sizeモジュールがインストールされていないようです。
王道のやり方としては、CPAN(http://search.cpan.org/)からImage::Sizeをダウンロードします。その中にあるSize.pmをMTのextlib/Imageディレクトリにコピーしてください。

MovableTypeのインストール方法にも同じ内容の記述があります。http://www.movabletype.jp/manual/mtinstall.html#if_you_need_to_install_image::size
参考にしてみてください。

投稿者 osho [TypeKey Profile Page] : 2005年05月17日 11:58

お返事ありがとうございます。
extlib/Image/size.pmは入っているんですが。。。
念のため、size.pmを入れなおしてみて、また報告させて頂きます。

投稿者 kai [TypeKey Profile Page] : 2005年05月19日 00:46

出張に出ておりましてなかなか報告できずすみませんでした。
Size.pmを入れなおしたんですが、やはり同様のエラーがでてしまいます。me-check.cgiも同様で全てインストールされていますと出ます。
ちなみにPerl ver.が5.8.4なんですが、5.6系でないのが原因とかあるのでしょうか?

投稿者 kai [TypeKey Profile Page] : 2005年05月22日 23:21

返事が遅れがちで申し訳ありません。
me-check.cgiで確認できるのは、meil-entryが動作するのに特別に必要なモジュールがあるかないか、だけです。size.pmはメジャーなモジュールのようで、どこのレンタルサーバーでも入っているようなのでチェックしていません。

Perlのバージョンは5.8系列で問題ないと思います。開発環境がMacOSXなのですが、5.8系列が入っていました(しかもβだったような)

エラーメッセージからは、「size.pmが見つからない」ということしか読み取れません。
投稿いただいたコメントには「@INC contains: http://***.com/blog/kai/ex tlib」とありますが、最後のex tlibのところ、実際にはひとつながりに「extlib」ですよね?
うーん、いったい何が原因なんでしょうか。難しくなってきました。

投稿者 osho [TypeKey Profile Page] : 2005年05月24日 15:33

oshoさん、お返事ありがとうございます。
OCNのインストールされているPerlモジュール一覧というサイトを参考に、size.pmを自宅サーバーのPerl内の指定フォルダにいれて確認。
次に違うエラーがでたのでまた指定フォルダに。これを手動でがんがん入れてみたところ、「ログインに失敗しました」と日本語表示一行のみへ変わり、2005年1月23日のバグを修正。
すると、以下のようなエラーがでました。
(ちなみに、MTフォルダのsize.pmなどは全くいじってません)
Error 500
CGI エラー - Content-Type ヘッダが正しくありません。
CGI 出力メッセージ: Can't call method "login" on an undefined value at E:\webserver\public_html\blog \kai\mail-entry\mail-entry.cgi line 161.

ここででたログインエラーはmail-entry.cgi内の設定で解決できるのでしょうか? 見てはいるのですがどこの部分か良く分かりません。
お手数をおかけしますが、何か解決方法があれば教えてください。

投稿者 kai [TypeKey Profile Page] : 2005年05月24日 22:23

ご迷惑をおかけしました。なんとか自己解決できました。
最後のエラー Can't call method "login" on an undefined value at・・・
は、単純にCryptモジュールが足りないだけでした。。。
これからは快適に使わせて頂きます☆

投稿者 kai [TypeKey Profile Page] : 2005年05月28日 01:48

kaiさん、こんばんは。
Cryptがないとそんなエラーになってしまうんですねぇ。私も勉強になりました。
ちょっと動作が重めのスクリプトですが、楽しんでくださいね。

投稿者 osho [TypeKey Profile Page] : 2005年05月30日 21:03

はじめましてflathillと申します。
mail-entryを使用させていただいています。
いざ設置してみたのですが
mail-entry.cgiでエラーが発生します。
エラー内容は以下のようになっています。

Can't call method "id" on an undefined value at (eval 1) line 451.

実際の箇所をみてみると
$entry->author_id($author->id);
ここだと思われます。
色々と試してみたのですがなかなかうまくいきません。
ちなみにサーバーはxreaのs6サーバーです。

お手数ですが、助けていただけないでしょうか?
よろしくお願いいたします。

投稿者 flathill [TypeKey Profile Page] : 2006年09月28日 11:19

flatillさん、初めまして。
えーと、あまり調べる時間がないので勘だけでお答えすることをお許しください。

author_id、つまり投稿者(MTだとなんて表現してましたっけ)のIDが取得できていないような感じを受けます。
MTは今までmail-entryなしで運用されてました?(つまり普通の運用)
MTも初めてということでしたら、投稿者が登録されていないだけかもしれません。

それでないとしたら、mail-entry-cobfigでの投稿者の指定が、綴りが微妙に違うとか。

そのあたりを確認してみてください。

投稿者 osho [TypeKey Profile Page] : 2006年09月28日 11:30

ありがとうございました。
イージーミスでした。
言われたとうり投稿者の綴りが違っていました。
お手数かけて申し訳ありませんでした。
これから快適なモブログライフが送れます。

本当にありがとうございました。

投稿者 flathill [TypeKey Profile Page] : 2006年09月28日 13:01

いやはや、私の勘も当たることがあるものですね。モブログライフ、楽しんでください。私はネタがなくて楽しめずにいます・・・

イージーミスを防止すべく、チェック処理を入れれば良いんですけれど、なかなかどうして時間がとれず。
開発より先にブログの更新頻度をあげなければー

投稿者 osho [TypeKey Profile Page] : 2006年09月30日 21:56

はじめまして。
mail-entry使わせていただいています。
メールがカラのときは"メールはありませんでした。"と表示されますが、
投稿をすると、
Can't call method "id" on an undefined value at (eval 1) line 618.
というエラーがでてしまいます。
一応、MT側には失敗した投稿の残骸が残ってます・・・。
ちなみに、mail-entrtyは0.6.2を使ってます。

投稿者 yamac [TypeKey Profile Page] : 2006年10月31日 04:41

お返事遅くなりました。最近コメントのお返事が遅れがちです。すいません。

思い当たる原因としては、
・カテゴリーがMovableTypeに1つも登録されていない
・mail-entry-configでの「標準のカテゴリー」もしくは「カテゴリー指定失敗時」の欄の指定ミス(スペルミス)
が考えられます。
失敗した投稿の残骸にはカテゴリーがセットされていますか?されていないようでしたら、上記を確認してみてください。

投稿者 osho [TypeKey Profile Page] : 2006年11月02日 22:58

コメントしてください

サイン・インを確認しました、 さん。コメントしてください。 (サイン・アウト)

(いままで、ここでコメントしたとがないときは、コメントを表示する前にこのウェブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


情報を登録する?