XREAでPHPプログラムが突然文字化けした問題を解決する方法の1つ

2017年4月2日に、私が使っているレンタルサーバーXREAのPHPが5系統から7系統にバージョンアップされた。

PHPプログラムを使っているページはあまりないので影響度はほぼないであろうと思っていると、トップページが文字化けしていることに気づいた。

10年ほど前に、PHPを覚え始めた頃に、そういえば、静的なhtmlファイルだったトップページをPHPにしたんだった、ということを思い出す。

XREAのサポートページを見ると以下の記載があり、3つの解決方法があった。


《XREAのサポートページ記載内容ここから》
Q7. PHPで構築したページが文字化けしている。

デフォルトのPHPが、FastCGI版PHP5.3から、FastCGI版PHP7.0に変更となっております。

PHP 設定項目「default_charset」のデフォルト値が、5.5 以下では「空」、5.6 以上は「UTF-8」に変更されているため、文字コードShift_JISやEUC-JPで記述したPHPスクリプトで文字化けが発生します。
対応方法として、下記の3パターンのいずれか一つを選んでご対応下さい。

1.PHP 7.0のままで、文字化けを解消します。
/public_html/.fast-cgi-bin/php70.ini
に、下記一行を追記する。
default_charset = ""
※ディレクトリごとに制御する場合は、PHPスクリプトと同階層に、上記一行を記載した「.user.ini」ファイルを設置いたします。
2.PHPスクリプト内で、下記一行を追記します。
ini_set('default_charset', '');
3.PHP 5.5 以下に戻します(非推奨)
サーバー管理画面の「PHP設定」にて、該当するドメイン名のPHPバージョンを、「PHP55」以下にし、「PHP設定」ボタンを押します。
※ PHP 5.5 以下のバージョンは非推奨です。やむを得ない場合以外は使わないようお願いいたします。
《XREAのサポートページ記載内容ここまで》


私としては、1つ目の方法で直してみた。
php70.iniファイルは、Tera Termでssh接続を行って修正した。

私に勘違いがなければ、php70.iniを修正しても、どうやら、すぐには設定は反映されないらしく、設定反映までに数分ほどの時間を要するようであった。

数分待つと、無事に文字化けは解消された。

curlコマンドでIオプションを付けて自分の文字化けしていたホームページのIRLを指定してみると、文字化け時にはcharset=UTF-8がヘッダ情報に含まれていたけれど、文字化け解消後には含まれなくなったことが確認できた。

《default_charset修正前》
-bash-4.2$ curl -I http://nobuneko.com/
HTTP/1.1 200 OK
Date: Sun, 02 Apr 2017 07:40:51 GMT
Server: Apache
Vary: User-Agent
Content-Type: text/html; charset=UTF-8

《default_charset修正後=文字コード指定を空にした後》
-bash-4.2$ curl -I http://nobuneko.com/
HTTP/1.1 200 OK
Date: Sun, 02 Apr 2017 07:44:47 GMT
Server: Apache
Vary: User-Agent
Content-Type: text/html

文字化けがなかなか解消しない人は、htmlヘッダ情報に文字コード指定が残っていないかどうかをcurlコマンド等で確認すると良いと思う。

この記事のメインカテゴリ:
SNS:
この記事に付けられているタグ: XREA