THE SAUNA これが噂のパラダイス
THE SAUNA これが噂のパラダイス
2010.12.10

timezoneの問題なんて知らねーっすよ

まっちー

今日、現在関わっている仕事のクライアントさんのテストサーバーにCakePHPの本体をアップロードしたんですけど、そしたら見たことないエラーが出ました。

Warning: date() [http://php.net/function.date]: It is not safe to rely on the system’s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected ‘Asia/Tokyo’ for ‘JST/9.0/no DST’

どうやらタイムゾーンが設定されていないせいでdate()関数が使えませんよ~ってなことらしいです。

PHP5.1以降は、デフォルトのタイムゾーンが設定されていないとこんなエラーが出るみたいですね。今まで見たことなかったってことは、今まで関わってきたサーバーはどれもちゃんとそのデフォルトのタイムゾーンが設定されていたってことなんですかね。

これを解決するには、php.iniの設定を書き換えるか、date_default_timezone_set()関数を使うと良いようです。

//php.ini
date.timezone = Asia/Tokyo

//date_default_timezone_set()を使う場合
date_default_timezone_set('Asia/Tokyo');

こういうときはphp.iniを直接書き替えたいところなんですけど、すでに動いているサイトのphp.iniを書き換えるのはちょっとあれなので、てゆーか、どこにphp.iniファイルがあるか分からなかったので、date何ちゃら関数の方で対処しました。

bootstrap.phpにでも書いとけば大丈夫かなって思ったんですけど、どうやらbootstrap.phpが呼ばれる前にdate()関数が発動している部分があるようで、仕方ないのでindex.phpに書きました。

いいんかいな……?