【PHP】Smartyのdata_formatの%a(曜日)が文字化けする問題の対処法

ある日、Webサービスの曜日の表示部分が文字化けしていることが判明しました。

ちなみにsmartyのdata_formatの%aは 曜日の省略を返します。 ex) Mon, Sun

原因

結論から記載しますと

経由サーバーのロケールがja_JPになっていたことが原因でした。

MacのTerminalで別のサーバーにsshログインすると最初にログインしたロケールを引き継ぐようです。

解決方法

経由サーバーのロケールをen_USに変更してapacheの再起動で直りました。

// ロケールの確認
locale

/etc/sysconfig/i18n を修正します。

// 変更前
LANG="ja_JP.UTF-8"

// 変更後
LANG="en_US.UTF-8"

これで、次回ログインからロケールが変更されます。
ログアウトせずに、すぐに反映したい場合は以下を実行してください

. /etc/sysconfig/i18n

あとはWebサーバーにログインしてapacheの再起動をしてください。

/etc/init.d/httpd restart