質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

2636閲覧

【PHP】同じレンタルサーバーなのに、mb_send_mailで文字化けしてしまい、その理由がわからない。

p-craft

総合スコア205

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2015/12/17 12:08

mb_send_mailで送信した内容が文字化けするという問題に悩んでいます。

送信前に

mb_language('ja');
mb_internal_encoding('UTF-8');

を記述しています。

この記述ししてから、
送信文章やヘッダーを組み立て、mb_send_mailで送信しています。

mb_send_mailを実行しているphpファイル自体は、UTF-8(BOM付き)です。

フォームから必要項目を入力して、submitすると、指定のphpファイルでPOSTデータが読み込まれ、内容がMySQLにセットされた後、フォームに入力されたメールアドレスに、登録完了メールが飛ぶという、よくある仕組みです。

このプログラムを、自分のレンタルしているサーバー(ロリポップサーバー ライトプラン)で構築し、きちんと文字化けも無く実行できる状態のファイルを、そのままお客さんのサーバー(同じくロリポップサーバーのライトプラン)にアップロードしたところ、文字化けになりました。

文字化けの内容は、
phpファイル内で書かれた文字が全て?で置き換わるというものです。

ちなみに、自分のサーバーのphpファイルをSJISやEUCに変えたところ、文字化けはするのですが、お客さんのサーバーで発生しているような、全部?で置き換わるような文字化けにはなりませんでした。

ちなみに、お客さんのサーバーにアップしたphpファイルの文字コードを、EUCやSJISに変えてもらっても、結局送信メールの文字は、全て?という状態で、自分のサーバーの時のように、文字コードを変えるごとに、文字化けの感じが変わるような事はありませんでした。

何故か、フォームから入力されたデータは、
全角文字であっても、文字化けしません。

このような現象なのですが、
なにせ、お客さんと同じサーバーで、
同じプランでも、自分のサーバーで実行させると、
文字化けしないため、どこをどう調査したらいいのかがわからない状態です。

このような状態なのですが、調査するとしたら、
後は、サーバーのPHPのバージョンや、
php.iniの内容くらいでしょうか?

見たら、自分のサーバーのphpのバージョンは、5.5(CGI版)なのですが、お客さんのサーバーは、お客さんに見てもらったろところ、5.2~5.3と記載されているとの事でした。

こんなところが関係するのでしょうか?

また、php.iniをキャプチャして送ってもらったところ、php.iniの内容については、自分のサーバーと同じでした。

今、私は、このような文字化けに対し、今、どこに問題があるのかが分からずに困っています。

サーバーのphpのバージョンなのか、php.iniの設定なのか、ファイルの文字コードなのか、プログラムのエンコードの仕方なのか。。。

長文すみません。
何かヒントとなるような事だけでも、ご存知の方がいらっしゃいましたら、ご教授頂けますと助かります。

どうか、よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

Webサーバーの設定はどうでしょうか?ロリポップはapacheのようですが、2つのサーバーの.htaccessファイルを見比べてみるとか。もしかするとhttp.confの設定も変えられるのでしょうか?でしたらAddDefaultCharsetが異なっていたりしませんか?

投稿2015/12/17 13:50

編集2015/12/17 13:54
jinco

総合スコア432

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

p-craft

2015/12/17 14:00

.htaccessですか? 自分のサーバーには無いのですが、お客さんのサーバーにはあるような事を言われていました。これが原因になる事もあるという事でしょうか? ここに、AddDefaultCharsetの設定があったりするという事なのですか?
jinco

2015/12/17 14:17

すみません。AddDefaultCharsetは関係ないかもしれないです。 .htaccessがphpの文字化けに関係する場合もあるようです。もしかするとお客様の環境でなにか設定があるのかもしれませんね。 http://jubei.co.jp/php/ini_mbstring.html#sec30
p-craft

2015/12/17 15:07

なるほど! このページは参考になります! はい、これと見比べて、調査してみようと思います! ありがとうございました!
guest

0

php回りだけを調べられているようですが、MySQLの方はどうでしょうか。
データはちゃんと文字化けせずにデータベースに格納されていますか?

MySQLの文字コードの設定も確認されてみてはどうでしょう。

投稿2015/12/17 13:28

KoichiSugiyama

総合スコア3041

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

p-craft

2015/12/17 13:35

ご回答ありがとうございます。 うーん、今問題になっているのは、送信メールの文字化けなので、MySQLを確認する事で解決に結び付くとは考えにくい。。。>_<
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問