概要
CentOS5x->CentOS7xへのリプレースを実施したときのことです。
旧環境では文字化けしていなかった一部のhtmlファイルの日本語が新環境では文字化けしていることが確認されました。
調査
対象htmlファイル内ではcharsetがshift-jisに指定されていました。
一方、ApacheのAddDefaultCharset utf-8(旧環境ではOFF)でした。なるほど。
そこで、新環境でも同じくこれをOFFにしたところ、、、なんと文字化けは解消しませんでした。
解決
調査の過程でphp環境の影響が浮上しました。
php.ini内でcharsetがutf-8と指定されており、これがApache起動時の設定パラメータを上書きしていたと思われます。
php.ini
; PHP's default character set is set to UTF-8.
; http://php.net/default-charset
default_charset = ""
; If empty, default_charset is used.
上記のとおり変更を反映させた後、対象htmlファイルの文字化けがなくなったことを確認しました。
※ApacheのAddDefaultCharset はOFF
phpのデフォルト設定でUTF-8が指定されるようになっていたようです。
対象ファイルは静的htmlファイルだったのでphpの設定との関連性になかなか気づけませんでした。