CakePHP2 を CentOS に入れようとしたら、「PHP のタイムゾーン設定がなんか変だよっ!」とありがたいご指摘をいただきましたので、対応いたしました。
ポイント
# php.ini の場所を確認 php -i | grep php.ini # timezone を編集するには次のようにする。 # date.timezone = "Asia/Tokyo" # Apache 文法チェック apachectl configtest # Apache 再起動 /etc/rc.d/init.d/httpd restart
原因
先ほどのご指摘の内容です。date.timezon 設定か、 date_default_timezone_set() 関数を使う必要があるよっ!ということのようです。
Warning: strtotime(): 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' instead in /var/www/html/oki2a24.com/cake01/lib/Cake/Cache/CacheEngine.php on line 59 Warning: strtotime(): 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' instead in /var/www/html/oki2a24.com/cake01/lib/Cake/Cache/CacheEngine.php on line 59
php.ini の場所を確認
php -i コマンドで、phpinfo() 相当の情報を得ることができます。ちょっと見辛いので、必要な部分のみ grep して表示させています。
[root@oki2a24 cake01]# php -i | grep php.ini PHP Warning: Unknown: 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' instead in Unknown on line 0 Configuration File (php.ini) Path => /etc Loaded Configuration File => /etc/php.ini
timezone を確認
同じコマンドで、今度は timezone に絞って調べました。
[root@oki2a24 cake01]# php -i | grep timezone PHP Warning: Unknown: 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' instead in Unknown on line 0 Default timezone => Asia/Tokyo date.timezone => no value => no value
あれれ?Asia/Tokyo になっています。。。何も設定されていないと思ったのですが。。。
ん!?ちょっと待ってください。「date.timezone => no value => no value」とあります。これは、きっと php.ini には何も設定されていないよ!ということだと思います。
timezone を編集
[root@oki2a24 cake01]# vim /etc/php.ini
↓
[Date] ; Defines the default timezone used by the date functions ; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone ;date.timezone = date.timezone = "Asia/Tokyo"
やはり、php.ini の date.timezone には何も設定されていませんでした。ですので、”Asia/Tokyo” を設定しました。
ちなみに、設定値は、ダブルクォーテーション「”」で囲ったほうがよい、囲わなかったらエラーが出た、というページを見たことがあります。今の PHP バージョンでもそうなのか、その方の環境が原因だったのか、わかりませんが、そのように設定しておきます。
一応、ざっと調べてみると、ほかの設定、たとえば ;mssql.charset = “ISO-8859-1” などで、ダブルクォーテーションが使用されていましたので、大丈夫でしょう。
逆に、シングルクォーテーションはコメント行以外には見当たらなかったので、php.ini にシングルクォーテーション「’」は使わないほうが無難と思います。
Apache 文法チェック・再起動
[root@oki2a24 cake01]# apachectl configtest Syntax OK [root@oki2a24 cake01]# /etc/rc.d/init.d/httpd restart httpd を停止中: [ OK ] httpd を起動中: [ OK ]
以上です。エラーが消えたことを確認できました。
おわりに
参考になったページです。php.ini 以外にもためになることが書いてあって、いい感じです。ありがとうございます。
追記(2013年5月18日) 最近は上記に加え、プラスアルファで以下の設定も変更しております。
以上です。
「php.ini のタイムゾーンの簡単な確認方法と実際に date.timezone を設定しました!」への2件の返信
[…] php.ini を意識し始めたは、php.ini のタイムゾーンの簡単な確認方法と実際に date.timezone を設定しました! | oki2a24 で紹介させていただいた次のページを見てからでした。 […]
[…] まくってるのが気になる。。。 ググっていくと↓こちらのページに詳しく書かれていますね。 https://oki2a24.com/2012/08/24/how-to-set-php-ini-date-timezone/ Timezoneの設定をしてApacheを再起動します […]