カテゴリー
コンピューター

php.ini のタイムゾーンの簡単な確認方法と実際に date.timezone を設定しました!

date.timezone.jpg

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件の返信

コメントを残す