プロが教えるわが家の防犯対策術!

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

環境
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関数自体がそもそも駄目なのでしょうか・・・。

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

以上

A 回答 (1件)

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



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

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

この回答への補足

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

結果的に、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
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/11/26 11:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!