PHP7だとmb_send_mailがエラー

php
スポンサーリンク

Googleのモジュールであるpagespeedや、格安の独自SSL、1日の通信量目安70GBといった、レンタルサーバー業界で常にTOPを走っている(と個人的には思っています)エックスサーバーで、PHP7が利用できるようになりました。

スポンサーリンク

php7でメールフォームが動かない

そこで意気揚々とphp7に変更したら、メールフォームが動きません。

フォームの内容を受け取って、メールを送信する部分のファイルが500エラーを返します。

form.php → mail.php → thanks.php のmail.phpが500エラ-

エラーログをダウンロードしてみると(エックスサ-バ-は簡単にエラーログがダウンロード出来ます)、下記の様なエラーが返ってきていました。

[Sat Dec 19 11:30:27 2015] [error] [client XXXXXXXX] Premature end of script headers: mail.php, referer: https://sample.com/contact/form.php

上記だけだと分かりませんが、このようなエラーが出るのは、下記のいずれかが原因とのことです。

①ファイルパーミッション

②パス情報と環境

③そもそものプログラムが原因

①と②はphp5の時は問題無く動いており、php7に変更しただけなので除外。

③に関しては、php7で使用できない関数も使っていないので困りました。

 

mail関数のみのフォームは動いており、mb_send_mail関数が入ったフォームがエラーを出していることに気づきました。

そこで、mb_send_mail関数を、mail関数に置き換えた所、見事動きました。

 

他のサーバーで試してもmb_send_mailが動かなかったので、もしかするとphp7自体の不具合かも知れませんが、
エックスサーバーサポートデスクに、php7でmb_send_mailが利用できない旨を問合せました。

すると、30分もかからずに返答をいただけました。

「mb_send_mailは問題なく使用できます。頂いた内容に関しては、技術スタッフが調査をして原因がわかったらご連絡します。」とのことでした。

mb_send_mailは多く使われている関数なので、原因がわかると良いです。

何はともあれ、エックスサーバーの対応は早くて素敵です。

コメント

タイトルとURLをコピーしました