PHP5でfgetcsvがおかしいが…笑えない
PHP5でfgetcsvが正常に動作しない…に関してのメモです。
事の発端はcrontabでシェルスクリプトよりPHPプログラムを動かした際になぜかCSVファイルより日本語の部分だけ取得出来ていないことであった。
ただ、おかしな事に全くPHPプログラムをいじっていないのにターミナル(コンソール)より手動で起動した際は問題なく動作しました。
色々とecho、print_rを駆使してバクの箇所を絞り込んでいくとfgetcsv直後で消えている現象が確認できました。
ここまでは、たっぷりハマってしまったのですが、ググッてみると…ふむふむ…
PHP5でfgetcsvの仕様が変わったらしい事が分かりました、またマニュアルにもきちんとそのことが書いてあるそうな…
確認してみると確かに「注意: この関数はロケール設定を考慮します。…」とかかれておりました。
で、ローケル設定を確認(# locale 結果:ja_JP.EUC-JP)したところ間違っちゃいないじゃないですか、しかも取り込むCSVも同じEUCで漢字コードでそろえてある…で、またハマってしまいました。
で、ググッてみると…ふむふむ…crontabなどより動作させた場合はローケル設定がcrontabで起動する際のローケル設定を採用するらしいのです。
さらに調べると、PHPからローケル設定を設定出来ることが分かりました。
setlocale関数を使うとのことで、早速「setlocale(LC_ALL,’ja_JP.eucJP’);」とプログラムの最初の方に記載しました。
crontabから起動させてみると、よかった!うまくいった!ちゃんと動作している。感涙。
- カテゴリ:Web開発
- 公開日:2006/08/02
- ↑ 記事評価をお願いします。

