アプリ版:「スタンプのみでお礼する」機能のリリースについて

テスト環境でメールの送信テストをしています。
【環境】
OS=Amazon Linux(AMI 2016.03.1)
インストール環境
sendmail.x86_64 = 8.14.4-8.12.amzn1
php.x86_64 = 5.3.29-1.8.amzn1
php-cli.x86_64 = 5.3.29-1.8.amzn1
php-common.x86_64 = 5.3.29-1.8.amzn1
httpd.x86_64 = 2.2.31-1.7.amzn1
httpd-tools.x86_64 = 2.2.31-1.7.amzn1
【状況】
windows環境からsshで接続して操作しています。
AWS EC2から社内の自分のメールアドレスへ向けて送信テストをしています。
【内容】
mail()を使った関数では、社内アドレスにメールは届くのですが、mb_send_mail()を使うと、実行したWEB画面が真っ白で、メールも届いておりません。

社内アドレスに届くソース(mail関数)
-------------------------------
<?php
#日本語メール送信
$to = "xxxxxx@xxx.co.jp"; #宛先
$subject = "送信テスト"; #題名
$body = "本文テスト"; #本文
$from = "test@localhost.localdomain"; #差出人

if (mail($to, $subject, $body, "From:".$from)){
print ("成功");
}else{
print ("エラー");
}
?>
-------------------------------
php.ini を編集し以下を設定
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.func_overload = 7
-------------------------------
届かないmb_send_mailソースは、上記ソースの「mail」の部分を「mb_send_mail」へ変更したものです。

あと、現在利用可能な関数リスト出したところ、mb_send_mailの記述がありませんでした。

関数リストを確認したソース
-------------------------------
<pre>
<?php
print_r(get_defined_functions());
?>
</pre>
-------------------------------
関数リスト、mailは829で定義されていますが、mb_で始まる関数が1つもありませんでした。
Array
(
[internal] => Array
(
[0] => zend_version
[1] => func_num_args
[2] => func_get_arg
 #中略
[829] => mail
 #中略
[1012] => zip_entry_compressedsize
[1013] => zip_entry_compressionmethod
)

[user] => Array
(
)

)
-------------------------------

おそらく、この「internal」へmb_send_mailが登録されれば、mb_send_mail()関数が使えると思うのですが、いろいろサイトを巡回してもmb_send_mailを定義するような記述はなく、通常はデフォルトで登録されているのかな?と思いました。
mb_send_mail()関数を使ってメール送信出来るようにするにはどうすれば良いでしょうか?
もしくは、mb_send_mailを自身で定義する場合はどうすれば良いでしょうか。
PHPの学習をはじめて2週間目ですが、問題が解決せずずっと悩んでおります。
良きお知恵を拝借出来ればと思い、質問させて頂きました。
よろしくお願い致します。

A 回答 (1件)

phpinfo()で確認しましょう。



mb_send_mailは、mbstring拡張モジュールが入っていないと使えません。
phpinfo の上の方にあるConfigure Commandの中に–enable-mbstring–という記述があれば問題なく利用できます。
    • good
    • 0
この回答へのお礼

いいいちろう様
早速の回答ありがとうございます!
数日悩んだ事が解決しました。

ご指摘頂いたphpinfo()で確認しましたら、Configure Commandの中に「-enable-mbstring-」記述が無かったので
yumより拡張モジュールをインストールしました。
$sudo yum install php-mbstring -y

そして、php.iniの[mbstring]以下の項目を修正。
httpdのデーモンをリスタートしましたら
print_r(get_defined_functions()); で 1040番目に関数が登録されました。
[1040] => mb_send_mail


早速、作成していたphpファイルをブラウザより実行したら
無事、mb_send_mail()関数でメールの送信が出来ました。

ありがとうございました。
【mbstring拡張モジュール】この一言のおかげで問題が解決出来ました。

お礼日時:2016/05/31 18:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このQ&Aを見た人がよく見るQ&A