MAKIZOU.COM

WEB系SEのホームページ作成&サーバ構築運用メモ

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開発
  • 公開日:
  • 1つ星2つ星3つ星4つ星5つ星
    Loading ... Loading ...
    ↑ 記事評価をお願いします。

コメント&トラックバック

トラックバック用URL

コメント




使用できるXHTMLタグ <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>