dポイントプレゼントキャンペーン実施中!

現在、メールを受信した際に、そのメールを別のアドレスに転送し、さらにサーバーに保存する、といったプログラムを作成しています。

メールを転送する処理が無事完成し、いざ書き込みを、と思っていたのですが
ファイルの書き込みがうまくできません。
メール受信時に、以下のようにメールフィルターの振り分けにて動作させています。
| /usr/bin/perl /home/hoge/public_html/piyo.cgi

書き込み処理はこのようにしています。
open(OUT, "+>foo.txt") or die "Can't open : $!";
flock(OUT, 2) or die "Can't flock : $!";
seek(OUT, 0, 0) or die "Can't seek : $!";
print OUT "piyo\n";
truncate(OUT, tell(OUT)) or die "Can't truncate: $!";
close(OUT);

とくにdieで処理が終了しているわけではなく、この後の処理も正常に行われているのですが
foo.txtへの書き込みが行われません。

また、メール受信時ではなく、通常アクセスでの場合はこの処理でファイルが正常に書き込まれることを確認しました。

エラーがでてとまるわけではなく、状況がわからず困っております。
皆様の知恵をお貸しください。よろしくお願いいたします。

A 回答 (2件)

ファイル追加書き込み以外の処理は、本当にきちんと行われていますか?


プログラムの中でメール転送もしているのですか? そのメールがきちんと転送されていれば、プログラムは起動していることになりますよね。。。

ちなみに、サーバによっては、forward等からプログラム起動できないこともあります(権限の問題ですね)

同じように、実行者の権限の問題で、パーミッションエラーを起こすこともあるのかな、と思います。ディレクトリやファイルの権限等々はいかがでしょうか?

一旦、メールからPerlにパイプするときに、sudoを挟んでみてはいかがですか? root権限で実行して結果が違えば、原因が絞れるような気がするので。
    • good
    • 0
この回答へのお礼

同一プログラムでメールの転送も行っているので、プログラムが起動していることは間違いないです。
権限等も確認してみましたが、問題ないようでした。

sudoというものは初耳ですので、調べながらもう少し原因を絞ってみます。
色々ありがとうございました。

お礼日時:2009/07/03 19:36

piyo.cgiのパスが間違っているような感じがしますが、、、

    • good
    • 0
この回答へのお礼

実際にpiyo.cgiのファイル保存部分以外の処理は行われているので、パスは問題ないようです。

お礼日時:2009/07/03 19:33

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