質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

3068閲覧

popenでsendmailを使用した際のエラーに関しまして

toasa

総合スコア7

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/02/09 04:44

編集2016/02/10 07:13

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)のエラーログに記録したい為、
こちらの謎のエラーの為だけにエラーを隔離しないなんらかの解決方法を御存知の方がいらっしゃいましたら、
お教えいただく事は可能でしょうか?

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shi_ue

2016/02/09 08:42 編集

「サーバのログ」ということですが、何のログですか?すみません、apacheのエラーログですね。多分。
toasa

2016/02/10 00:48

仰られておられます通り、apacheのエラーログでございます。
shi_ue

2016/02/10 07:41

普通にコンソールからsendmailを使った場合、リターンコードはどうなってますか? bashなら「echo $?」で見られます。
toasa

2016/05/02 00:34

お世話になっております。 だいぶ立ちまして、大変申し訳ございません。 その後、私の諸事情で恐縮ではございますが、ドタバタしておりまして、 漸く一段落ついた為、返信をさせていただきます。 結論といたしまして、解決(?)しました。 内容としていましては、今回レンタルしておりましたサーバーでしたので、sendmailコマンドを打てないようなサーバーだったので、途方に暮れておりましたが、えいやと、無理やり、PHPでsendmailを直接、ファイルとして、表示してみた所、おそらく権限関連だと思われるのですが、 sendmailのwrapperとしてsendmailと言うperlが、動作している状況でございました。 このperlが曲者で、最終的に、print $error . "\n";となっており、 エラーが無い場合でも改行のみが出力されると言う謎の仕様となっており、 そのせいで、今回の謎事象が発生していたと言う形になります。 つまり、サーバーの仕様、と。 うわぁぁぁぁぁぁぁぁってなりました。 shi_ueさんには、案を挙げていただき、誠にありがとうございました! これで、この質問に関しましては、閉じさせていただければと存じます。 以上、重ねて御礼を申し上げます!ありがとうございました!
guest

回答2

0

自己解決

結論といたしまして、解決(?)しました。

内容としていましては、今回レンタルしておりましたサーバーでした。
shi_ueさんご助言の、sendmailコマンドを打てないようなサーバーだったので、
途方に暮れておりましたが、えいやと、無理やりPHPでsendmailをファイルとして表示してみた所、
おそらく権限関連だと思われるのですが、sendmailのwrapperとしてsendmailと言うperlが、
動作している状況でございました。

このperlが曲者で、最終的に、print $error . "\n";となっており、
エラーが無い場合でも改行のみが出力されると言う謎の仕様となっており、
そのせいで、今回の謎事象が発生していたと言う形になります。

つまり、サーバーの仕様、でした。。。。。。。。。。。。。。。。。。。。

shi_ueさん、chinyatoさん、お付き合いいただき、誠にありがとうございました!

投稿2016/05/02 00:37

編集2016/05/02 00:45
toasa

総合スコア7

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

2行目の$to = 最後に;がないのは掲載時のミスですか?
1行目と2行目のメールアドレスが""で括られていないのも掲載時のミスですか?

投稿2016/02/10 01:14

chinyato

総合スコア241

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

toasa

2016/02/10 07:10

ご指摘誠にありがとうございます。掲載時のミスでございます。 こちら、修正いたしました。 実際のコードには、記載があり、動作自体は、エラーを除き、最後まで問題なく進んでいる状況でございます。
toasa

2016/05/02 00:37

ご指摘ありがとうございました! 自己解決いたしました。結論といたしましては、サーバーの仕様でした。。。。 本当にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問