PHP バージョン変更後、レイアウトが崩れたり文字化けが発生する。


PHP のバージョン変更後、以下の現象が発生することがあります。

  • 文字化けが発生する
  • CSSを利用しているサイトの一部でレイアウトが崩れる
  • WordPress 管理画面のレイアウトが崩れる
  • WordPress でプラグインのインストールや削除時にエラーになる



PHPで日本語などのマルチバイト文字を扱う際、文字コードを適切に設定しないと文字化けなどのトラブルの原因になります。
PHP 5.6.0 以降は “UTF-8” がデフォルトになり、htmlentities() や html_entity_decode() そして htmlspecialchars() で encoding パラメータを省略した場合は、このデフォルト値を利用する仕様に変更になっています。

■ 参考サイト:PHP マニュアル > 付録 > php.ini ディレクティブ
https://secure.php.net/manual/ja/ini.core.php#ini.default-charset



これらの原因により、文字コードを適切に設定していないとPHPプログラムが正常に終了しないため、文字化けやレイアウト崩れが発生します。



対策といたしまして、下記内容を記述した .htaccess ファイルを該当のディレクトリに設置することで回避可能です。

PHP_value default_charset none
PHP_value output_handler none



共用サーバーで CGI 版 PHP (バージョン 5.5系 / 5.6系 / 7.0系 / 7.1系 / 7.2系)をご利用の場合は、 下記内容を記述した .user.ini ファイルを該当のディレクトリに設置することで回避可能です。
⇒ PHP設定を .user.ini で変更する

output_handler=none
default_charset=none
評価点数: 5 (2 件の投票)