PHPによるpopen関数でのsendmailの実行に関して、謎のエラーが出て困っております。
$from = 'from@hoge.com'; $to = 'to@hoge.com'; $mp = popen("/usr/sbin/sendmail -f $from $to", "w"); fputs($mp, "Subject: test\n"); fputs($mp, "To: ".$to."\n"); fputs($mp, "From: ".$from_marge."\n"); fputs($mp, "\n"); fputs($mp, "test\n"); pclose($mp);
上記のコードを実行した際に、サーバ(apache)のエラーログで、
[Tue Feb 09 13:05:16 2016] [error] [client xxx.xxx.xxx.xx]
とエラー記述の全くないエラーが出力された為、
$mp = popen("/usr/sbin/sendmail -f $from $to".' 2>logs/__sendmail_stderr.txt', "w");
とし、確認した所、空の1byteテキストが作成され、
バイナリエディタ上では、0D0Aのみが存在する状態になっております。
動作自体は何の問題もなく動いておりますが、同箇所の他のエラーなどが発生した際に、
サーバー(apache)のエラーログに記録したい為、
こちらの謎のエラーの為だけにエラーを隔離しないなんらかの解決方法を御存知の方がいらっしゃいましたら、
お教えいただく事は可能でしょうか?
以上、よろしくお願いいたします。
普通にコンソールからsendmailを使った場合、リターンコードはどうなってますか?
bashなら「echo $?」で見られます。
お世話になっております。
だいぶ立ちまして、大変申し訳ございません。
その後、私の諸事情で恐縮ではございますが、ドタバタしておりまして、
漸く一段落ついた為、返信をさせていただきます。
結論といたしまして、解決(?)しました。
内容としていましては、今回レンタルしておりましたサーバーでしたので、sendmailコマンドを打てないようなサーバーだったので、途方に暮れておりましたが、えいやと、無理やり、PHPでsendmailを直接、ファイルとして、表示してみた所、おそらく権限関連だと思われるのですが、
sendmailのwrapperとしてsendmailと言うperlが、動作している状況でございました。
このperlが曲者で、最終的に、print $error . "\n";となっており、
エラーが無い場合でも改行のみが出力されると言う謎の仕様となっており、
そのせいで、今回の謎事象が発生していたと言う形になります。
つまり、サーバーの仕様、と。
うわぁぁぁぁぁぁぁぁってなりました。
shi_ueさんには、案を挙げていただき、誠にありがとうございました!
これで、この質問に関しましては、閉じさせていただければと存じます。
以上、重ねて御礼を申し上げます!ありがとうございました!
回答2件
あなたの回答
tips
プレビュー