小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


PHP5.3のdate関数でIt is not safe to rely on the system's timezone settings.

PHP5.3で現在時刻を取得しようと、date関数を使った以下のようなコードを書いたら警告がでました。

<?PHP
$now = date("YmdHis");
print $now;
?>

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 ファイル名

原因

タイムゾーンを指定していないのが原因でした。PHP 5.1.0からタイムゾーンを正しく設定せずに日付/時刻関数を呼び出すと警告がでます。

注意: PHP 5.1.0 以降(日付/時刻 関数が書き直されてから)、タイムゾーンを 正しく設定せずに日付/時刻関数をコールすると E_NOTICE が発生し、またシステムの設定や TZ 環境変数を 使用すると E_WARNING が発生するようになりました。
PHP: date_default_timezone_set - Manual はてなブックマーク - PHP: date_default_timezone_set - Manual

対処方法

上記の警告がでないようにするには、以下のエントリにあるように、date_default_timezone_set関数でタイムゾーンを指定してからdate関数を呼び出すか、php.iniであらかじめタイムゾーンを指定する必要があります。

つまり、date_default_timezone_set関数では以下のように記述、
date_default_timezone_set('Asia/Tokyo');

php.iniでは、以下のように設定、
date.timezone = Asia/Tokyo
date関数で”Asia/Tokyo・・”なんかのエラーが出る件:PHP5.1.0以降 はてなブックマーク - date関数で”Asia/Tokyo・・”なんかのエラーが出る件:PHP5.1.0以降