PHP環境設定(php.ini)がおかしかったので文字化け
minibirdで運用しているサイトで、concrete 5.6 にバージョンアップした後、記事ブロックやHTMLブロックなどを編集して保存を行うと文字化けしてしまう現象が発生していました。
既存のコンテンツの表示が文字化けしてしまうことはなく、このところ更新することもなかったのでほったらかしにしておいたのですが・・・。
本日久しぶりに更新を行おうとしたところ、文字化けしてしまうことを思い出し、慌てて原因を調べ始めた次第です。
conrete5のバージョン
・concrete5.6.0.2.ja
・concrete5.6.3.3.ja (バージョンアップしたら直るかと期待したのですが・・・)
PHPのバージョン: PHP5.5.19
その結果、php.ini の mbstring の設定がイケていないようだということが判明しました。
minibirdでは、「PHP環境設定」としてphp.iniのカスタマイズができるようになっています。
これまでは次のようにしていたのですが・・・
-----
(「php.ini直接編集」の修正箇所のみ抜粋)
[mbstring]
extension=mbstring.so
mbstring.language = neutral
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = UTF-8
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none;
-----
これを次のように修正したところ・・・
-----
[mbstring]
extension=mbstring.so
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
;mbstring.http_input = UTF-8 ←★行頭に「;」を付けてコメントアウト。
;mbstring.http_output = UTF-8 ←★行頭に「;」を付けてコメントアウト。
mbstring.encoding_translation = Off
mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII
mbstring.substitute_character = none;
-----
無事、文字化けは発生しなくなりました。
以上、ご参考まで。