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)のエラーログに記録したい為、
こちらの謎のエラーの為だけにエラーを隔離しないなんらかの解決方法を御存知の方がいらっしゃいましたら、
お教えいただく事は可能でしょうか?
以上、よろしくお願いいたします。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
check解決した方法
0
結論といたしまして、解決(?)しました。
内容としていましては、今回レンタルしておりましたサーバーでした。
shi_ueさんご助言の、sendmailコマンドを打てないようなサーバーだったので、
途方に暮れておりましたが、えいやと、無理やりPHPでsendmailをファイルとして表示してみた所、
おそらく権限関連だと思われるのですが、sendmailのwrapperとしてsendmailと言うperlが、
動作している状況でございました。
このperlが曲者で、最終的に、print $error . "\n";となっており、
エラーが無い場合でも改行のみが出力されると言う謎の仕様となっており、
そのせいで、今回の謎事象が発生していたと言う形になります。
つまり、サーバーの仕様、でした。。。。。。。。。。。。。。。。。。。。
shi_ueさん、chinyatoさん、お付き合いいただき、誠にありがとうございました!
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
2行目の$to = 最後に;がないのは掲載時のミスですか?
1行目と2行目のメールアドレスが""で括られていないのも掲載時のミスですか?
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.21%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
shi_ue
2016/02/09 17:13 編集
「サーバのログ」ということですが、何のログですか?すみません、apacheのエラーログですね。多分。
toasa
2016/02/10 09:48
仰られておられます通り、apacheのエラーログでございます。
shi_ue
2016/02/10 16:41
普通にコンソールからsendmailを使った場合、リターンコードはどうなってますか?
bashなら「echo $?」で見られます。
toasa
2016/05/02 09:34
お世話になっております。
だいぶ立ちまして、大変申し訳ございません。
その後、私の諸事情で恐縮ではございますが、ドタバタしておりまして、
漸く一段落ついた為、返信をさせていただきます。
結論といたしまして、解決(?)しました。
内容としていましては、今回レンタルしておりましたサーバーでしたので、sendmailコマンドを打てないようなサーバーだったので、途方に暮れておりましたが、えいやと、無理やり、PHPでsendmailを直接、ファイルとして、表示してみた所、おそらく権限関連だと思われるのですが、
sendmailのwrapperとしてsendmailと言うperlが、動作している状況でございました。
このperlが曲者で、最終的に、print $error . "\n";となっており、
エラーが無い場合でも改行のみが出力されると言う謎の仕様となっており、
そのせいで、今回の謎事象が発生していたと言う形になります。
つまり、サーバーの仕様、と。
うわぁぁぁぁぁぁぁぁってなりました。
shi_ueさんには、案を挙げていただき、誠にありがとうございました!
これで、この質問に関しましては、閉じさせていただければと存じます。
以上、重ねて御礼を申し上げます!ありがとうございました!