QUOIT Blog

[php]crontabで日本語処理する際にハマったこと

この記事は4年以上前の記事です。情報が古い場合がありますのでお気を付け下さい。

ちょこっとメモです。
phpを書いていて、日本語が書かれたCSVファイルをcrontabで処理しようと思ってハマったときのお話。

現象としては、以下のような感じ。

・SSHで直接phpファイルを実行すると問題なく処理できる
・ブラウザからアクセスして実行してみても問題なく処理できる
・同じプログラムをcrontabで処理するとうまくいかない

具体的には、crontabで処理した場合のみ、日本語が解釈できず、DBに入らないという現象でした。

結論から言うと、PHPのロケールの問題でした。
下記の記事を参照して解決。

PHPのロケール、又はアパッチの環境変数 LANG – Rubyとか Illustratorとか SFとか折紙とか – http://bit.ly/18a9IjZ

プログラムに、下記の一文を付け加えて解決しました。
(もちろん環境によって設定は違いますが)

setlocale(LC_CTYPE, 'ja_JP.UTF-8');

要は、きちんとロケール設定してね、ってことだけなのですが…
地味にハマったのでメモしておきます。

Comments are closed.