PHP工房トップ

HOME > News&Tips > PHP7におけるmb_send_mailのエラー(バグ)「500 Internal Server Error」

PHP7におけるmb_send_mailのエラー(バグ)「500 Internal Server Error」

2015/12/27

【2016/5/16追記】

PHP7.0.3では下記不具合は改善されているようです。
(エックスサーバーではPHP7.0.3にバージョンアップされ、改善されていることを確認しています)


PHP7環境でメールフォームなどで主に使われるPHPのメール送信用のメジャーな関数「mb_send_mail」を使用した場合にエラーが発生し送信できない不具合が確認されています。
「mb_send_mail」はPHPでは非常にメジャーな関数のためその影響は比較的甚大であると思われます。

これが完全なバグであるのか、または使用ルールに沿っていないためであるのか、またその具体的な対処法があるのかは現時点では分かりませんが、バグの可能性が高いと考えられます。

※当方ではエックスサーバーにて確認しています。


参考(バグレポート)
PHP公式サイトでも報告があがっていました。(ご報告いただいたN様にはこの場を借りて感謝申し上げます)
https://bugs.php.net/bug.php?id=71066


エラー発生要件

以下いずれも該当している場合。

1,PHP7環境であること(現時点ではPHP7.0.0、及びPHP7.0.1で確認)
2,mb_send_mail関数を使用し、かつメールヘッダを明示的に指定している場合
※ヘッダに「’Content-type: text/plain; charset=UTF-8’」を指定している場合。


mb_send_mailは本来言語環境に合わせて自動的にメールヘッダがセットされるため、あえて指定せずとも基本的にはOKですが、メールヘッダを明示的に指定した場合にエラーとなりました。(メールヘッダを指定しなければ正常に送信できることを確認しています)
※ただし、Fromは必要です。

具体的には送信時に(要するに関数の実行時)にエラーとなります。
サーバーにより異なるかもしれませんが、「500 Internal Server Error」となります。


対処方法
以下4つが考えられます。

1,PHP5.6以下で使用する (現時点ではこれが最適かつ手っ取り早いかもしれません)
2,mail関数を使う
3,メールヘッダ(Content-Type:text/plain;charset=utf-8)を明示的に指定しない
4,PHP側の正式なデバッグを待つ(現時点では将来的に行われるかどうかは不明です)

PHP7は著しくパフォーマンスが向上したということですので使用してみたいところだとは思いますが、
現実的にはメールフォーム程度のシンプルなプログラムの場合にはその恩恵はほぼ受けられない(体感できるほどではない)とも言えます。


問題点

メールヘッダを明示的に指定しないという方法でほとんどの場合は解決しそうですが、
添付ファイル付きのメールを送信する場合、特殊なメールヘッダを明示的に指定する必要が有るため、
添付ファイル付きのメールを送信する場合はそう簡単にはいかないわけですね。

またmail関数に置き換えることも考えられますが、コードの大幅な変更やその他の副作用が無いとも限らないため現時点では当サイトのプログラムでは実施しませんのでご了承下さい。


当サイトの該当プログラム
以下3プログラムが該当します。
※フリー版やその他メールフォームプログラムはmail関数を使用しているため問題ありません。
※あくまでも添付ファイル機能付きのプログラムと多言語対応版のみ該当します。

【MailForm05】PHP多機能メールフォーム ファイル添付機能付き(有料版)

【MailForm-FULL】PHP多機能メールフォーム 全機能搭載版(有料版)

【MultiLangForm01】PHPメールフォーム多言語対応版(中国語、韓国語、英語)フリー(無料)

大変申し訳ございませんが、このプログラムをご使用される場合にはPHP5.6以下にて使用頂きますようお願い致します。
PHP側の今後リリースされるアップデートにて正式にデバッグが行われるまではPHP7環境では使用できません。

ご購入いただいた方で、どうしてもPHP7環境で動作させる必要がある場合にはご相談下さい。
個別に修正させていただきますが、十分な動作確認が必須となります。




一覧へ



PHPメールフォーム(無料版)

PHPメールフォーム(有料版)

新着情報・更新履歴CMS(無料版)

投票・アンケートシステム(無料版)

テロップCMS(無料版)

写真ギャラリーCMS(無料版)

営業日カレンダーCMS(無料版)

営業日カレンダーCMS(有料版)

カレンダー予約フォーム(無料版)

カレンダー予約フォーム(有料版)

リンク集ページCMS(無料版)

アクセスカウンター(無料版)

ダウンロードカウンター(無料版)

その他

メールフォームの各種カスタマイズならお任せ下さい
業務効率化が可能なPHPオリジナルCMS制作します

役立つかも?なもの

豆知識や役立ち事など

PHPについて

各種情報