本日はPHP 5.3.x上のCakePHP 1.3.xで動くシステムの修正というか、修正するための環境を作りました。
まずはPHP 5.3.xなので
vagrant init bento/centos-6.7
vagrant up
ローカルの開発環境なので関係ないですがCentOS6のPHP 5.3.3について
RHEL/CentOS 6のPHP5.3.3 は安全か? – Qiita
だそうです。
続いて、サーバーにログインして
sudo yum install httpd php
sudo chkconfig httpd on
sudo vi /etc/httpd/conf/httpd.conf(適当に設定)
sudo service httpd restart
とりあえずこれで動かしてみる……むむっ、なんか変。CSVを読み込んで表示する表の中の日本語が出ていなーい。
で、色々調べた結果、fgetcsvって関数がサーバーのロケール設定の影響を受けるとのこと。サーバーのロケールを「ja_JP.UTF-8」に変更するも直らず。CSV読み込みの前でsetlocaleすると表示された、が根本的な解決方法は分からず。CSVはUTF-8です。
まぁ、開発環境だし、修正箇所には関係ないのでいいか~。
ちなみに公式ドキュメントにも書いてありますが getlocaleってのは存在せず、 setlocale(LC_ALL, ‘0’) で現在の設定が返ります。CSV読み込みの前に入れると「C」でした。