操作
Backport(バックポート) #2522
完了PHPのsafe modeを使用している環境でmail_envelope_fromを設定するとメールが送信できない
開始日:
2010-07-13
期日:
進捗率:
100%
予定工数:
説明
Overview (現象)¶
PHP の safe mode が有効な環境で、config/OpenPNE.yml の設定で mail_smtp_host を指定せずに mail_envelope_from を指定している場合に、招待メール送信などのメールを送信するアクションを実行すると 500 Internal Server Error が発生する。
エラー内容は以下の通り。
500 | Internal Server Error | Zend_Mail_Transport_Exception Unable to send mail
mail_envelope_from の設定をしていない場合は正常にメールが送信される。
CORESERVER Bプラン、OpenPNE 3.6beta11で現象を確認。詳細は note-12 のコメント。
Causes (原因)¶
safe mode が有効な状態で PHP の mail() 関数に第5引数を指定して実行しているため。
Way to fix (修正内容)¶
safe mode が有効かつ外部のSMTPサーバを利用しない( mail_smtp_host を指定していない)状態では mail_envelope_from の設定が利用できないことを前提とし、その説明を設定ファイルに加え、ソースコード上で safe mode の設定値を取得して有効な場合には mail_envelope_from を利用しないようにした。
元のバグ報告内容¶
http://sns.openpne.jp/communityTopic/6047
OpenPNE 3.5.2を利用していますが、 「友人を招待する」から招待メールを送信しようとすると、 メールアドレスと本文を入力する画面までは出るのですが、 「送信」ボタンを押すと、「500 Internal Server Error」となってしまいました。 デバッグモードで試してみても、Internal Server Errorの画面が出るだけでした。 これはバグなのでしょうか? どうか調査お願い申し上げます。 (1)OpenPNEのバージョン : 3.5.2 (2)サーバー情報 : 「CORESERVER.jp Bプラン」を使用 PHPバージョン:5.2.5 MySQL : 5.1.22-rc (3)エラー概要 : 招待メールを送信するとき、フォーム入力画面は表示されるが、「送信」ボタンを押すとInternal Server Errorとなる。
操作