はじめまして、ゆーろと申します。
FedoraCore3で自宅サーバーに挑戦しています。
apache2 + MySQL + PHP + Postfix という環境を目指しています。
まだ、ドメイン等を申請していないので
ローカルネットワーク内でのみの検証ですが、
apache2とMySQL、PHPはそれぞれ動いています。
(apache2, MySQL, PHPはyumコマンドにてインストールいたしました)
Apache (2.0.52)
PHP (4.3.11)
MySQL (bdb_version Berkeley DB 3.2.9a)
Postfix (2.1.5)
掲示板で書き込みがあれば、通知メールを送信したいと思っております。
mb-string-4.3.9.3.i386.rpmを導入しており、
mb_send_mail()関数は使用できるはずなのですが
なぜか、日本語の件名、本文が化けてしまいます。
FC3はデフォルトの文字コードがUTF-8ということでメールが文字化けしているのかと
推測し、/etc/sysconfig/i18n の設定を変更してみました。
#LANG="ja_JP.UTF-8" (EUCへ変更)
↓
LANG="ja_JP.eucJP"
#SUPPORTED="en_US.UTF-8:en_US:en:ja_JP.UTF-8:ja_JP:ja:" (ja_JP.eucJPを追加)
↓
SUPPORTED="en_US.UTF-8:en_US:en:ja_JP.UTF-8:ja_JP:ja:ja_JP.eucJP"
SYSFONT="latarcyrheb-sun16"
変更後もメールを送信するテストコードを試したのですが、
やはり、文字化けは解消されていませんでした。
[ テストコード ]
<?php mb_send_mail( "aaa@example.com", "件名" , "本文" ); ?>
日本語環境がそろっていないのでしょうか?
日本語の環境をしらべてみたのですが、
[root@localhost locale]# find / -name "ja_JP*" -print
/usr/lib/locale/ja
/usr/lib/locale/ja_JP.utf8
/usr/lib/locale/ja_JP.eucjp
/usr/share/locale/ja_JP.SJIS
/usr/share/locale/ja_JP.eucJP
/usr/share/i18n/locales/ja_JP
[root@localhost locale]# less /usr/share/locale/locale.alias |grep ja
japanese ja_JP.eucJP
japanese.euc ja_JP.eucJP
ja_JP ja_JP.eucJP
ja_JP.ujis ja_JP.eucJP
japanese.sjis ja_JP.SJIS
ロケール・データにISO-2022-JPが入っていないことに気づきました。
メール送信に必要な文字コードが入っていないことが原因でしょうか。
また、文字化けしないように送信するには、どのようにして追加すればご存知でしょうか。
文字コードを追加すれば解決すると想定しているのですが、
検討が外れていましたら、その際は、ご指摘いただいませんでしょうか。
よろしくお願いいたします。
> はじめまして、ゆーろと申します。
> FedoraCore3で自宅サーバーに挑戦しています。
> apache2 + MySQL + PHP + Postfix という環境を目指しています。
> まだ、ドメイン等を申請していないので
> ローカルネットワーク内でのみの検証ですが、
> apache2とMySQL、PHPはそれぞれ動いています。
> (apache2, MySQL, PHPはyumコマンドにてインストールいたしました)
>
> Apache (2.0.52)
> PHP (4.3.11)
> MySQL (bdb_version Berkeley DB 3.2.9a)
> Postfix (2.1.5)
>
>
>
> 掲示板で書き込みがあれば、通知メールを送信したいと思っております。
> mb-string-4.3.9.3.i386.rpmを導入しており、
本質ではないですが、何で4.3.11ではないんでしょうか?
> mb_send_mail()関数は使用できるはずなのですが
> なぜか、日本語の件名、本文が化けてしまいます。
>
> FC3はデフォルトの文字コードがUTF-8ということでメールが文字化けしているのかと
> 推測し、/etc/sysconfig/i18n の設定を変更してみました。
>
> #LANG="ja_JP.UTF-8" (EUCへ変更)
> ↓
> LANG="ja_JP.eucJP"
>
> #SUPPORTED="en_US.UTF-8:en_US:en:ja_JP.UTF-8:ja_JP:ja:" (ja_JP.eucJPを追加)
> ↓
> SUPPORTED="en_US.UTF-8:en_US:en:ja_JP.UTF-8:ja_JP:ja:ja_JP.eucJP"
> SYSFONT="latarcyrheb-sun16"
>
> 変更後もメールを送信するテストコードを試したのですが、
> やはり、文字化けは解消されていませんでした。
>
> [ テストコード ]
> <?php mb_send_mail( "aaa@example.com", "件名" , "本文" ); ?>
実際のコードを自動検出ではなく明に指定してあげれば、うまくいくと思います。phpは得意ではないので自信はあまりありませんが?
<?php
mb_internal_encoding("SJIS");
mb_send_mail( "aaa@example.com", "件名" , "本文" );
?>
> > mb-string-4.3.9.3.i386.rpmを導入しており、
>
> 本質ではないですが、何で4.3.11ではないんでしょうか?
はい。^^; 実は、先日購入しました
「始めてのFedoraCore3(秀和システム)」に入っていましたので、
そちらをインストールしていました。
バージョンが違っていたことに、気づきませんでした。
ご指摘ありがとうございました。
あたらにのバージョン4.3.11のmb-stringを入れなおしました。
その後、php.iniの[mbstring]の設定が抜けていましたので、
設定しましたところ、文字化けが解消されました。
今回は、2つの問題があったとは検討も付きませんでした。
バージョンの違いと、php.iniの設定。勉強になりました。
本当にありがとうございました。