こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PerlでInternal CGI Error Malformed Error

こんばんわ。
皆様お忙しいところかと思いますが、
なにとぞお助けいただけますようお願いいたします。

環境
Perl5.0.8.2
VineLinux3.2
Apache1.3.33

皆様方から見るとなんでそんなことしてるの!?
と思われると思いますが、現在、perlにて、
メールフォームを作ろうと考えています。

ただperlからのメールフォームは、sendmailを
利用したものが多いのですが、sendmailが
インストールできない環境な為、
Javaにてメール送信用のコマンドを作成しまして、
ファイルパスをパラメータとして渡すことで、
メールが送信出来るにはなりました。
(文字化けなどが発生していますが(汗))

一々forkするのはお勧めできないと言うのは
置いておいて、Internal CGIErrorが発生してしまい、
よく解決方法がわかりません。(perl初心者です)

Apacheのerror.logには以下のメッセージが出ています。

mailformed header from script. Bad header=0:

切り分けのために以下のコードだけにして実行してみたのですが、動作は正しいのですが、internal CGI error
が発生してしまいます。

$status = system($COMMAND);
print "Content-Type:text/html\n\n";
print "success";

hello perlではこんな感じで表示できているので、
system関数自体がそもそも駄目なのでしょうか・・・。

申し訳ございませんがご教示ください。

以上

投稿日時 - 2005-11-26 01:49:21

QNo.1801945

暇なときに回答ください

質問者が選んだベストアンサー

恐らくsystemが何かを出力してるんじゃないでしょうか?

$ref = `$COMMAND`;
print "Content-Type:text/html\n\n";
print "$ref";

とかにするとどうなりますか?

投稿日時 - 2005-11-26 02:27:49

補足

深夜なのに回答いただきましてありがとうございます。
私は、もう疲れ果てまして、寝てしまっておりました。
申し訳ございません。

結果的に、mizuno3さんのレスで、InternalCGIErrorは、解決することが出来ました。
ありがとうございます!

systemが何か出力しているとのことで、
system関数を含め、

$status = system($COMMAND);
print "Content-Type:text/html\n\n";
print "$status";
としたところ、0が表示されました。
error.logで表示されていた、bad header=0というのは
そのものの0が出力されているという意味
だったのですね(汗)

そもそものコードは、
$status = system($COMMAND);
print "Content-Type:text/html\n\n";
print "success";
のようになっていますので$statusを
処理していなかったため、という事のようですが
print も発行していないのに出力されるのが、
完全に盲点でした。参考になりました。

perlとは、難しい言語なのですね。

なぜこんな動作か説明していただけると向学の為にも
ありがたいです。

以上よろしくお願いいたします。

投稿日時 - 2005-11-26 11:43:41

お礼

ポイントをお礼したいです。

投稿日時 - 2005-11-26 11:58:36

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問