XAMPPのphpの時計が大幅にずれている場合の対応方法 と 時刻周辺のはなし

PHP
スポンサーリンク

あまり触らないところなので毎回忘れるためいい加減メモを残す。

1.XAMPPの時計が大幅にずれる現象に遭遇した

テーブルに格納されたテストデータのタイムスタンプの値に違和感を覚えたので、以下を表示してみた。

echo date("Y-m-d H-i-s");

ちょうど8時間ずれている(遅れている)。
念のためXAMPPを設置しているサーバのシステム時刻を確認したが問題なし。

ちなみにここでの環境は下記

XAMPP for Windows 1.8.1 (PHP 5.4.7)

2.XAMPPの時計が大幅にずれている場合の対応方法(Windows)

php.iniの設定でタイムゾーン的な設定があったようななかったような記憶が蘇り、php.iniを開いてみたところ、そういうのがあった。

[Date]
; Defines the default timezone used by the date functions
; php.net/date.timezone
date.timezone = Europe/Berlin

これを下記に修正。

date.timezone = Asia/Tokyo

修正後にApacheを再起動することで現象は改善。

3.XAMPPの時計が大幅にずれている場合の対応方法(Mac)

ちなみにXAMPP for MACだとphp.iniのデフォルトのタイムゾーン設定は下記のようになっていた。

date.timezone = 'UTC'

UTCとは協定世界時のこと。グリニッジ標準時とは微妙に違うことに注意。

4.php.iniのタイムゾーンとコンピュータのシステム時刻との関係

phpによるタイムゾーンの設定などは設けられているものの、これら「タイムゾーン」「日付」「時刻」はコンピュータのシステム時刻からとってきている値である。
例えばWindowsでは以下のようにタイムゾーン、日付・時刻を変更する画面があるが、これと同様に「タイムゾーン」をphpのほうで設定しているだけ。日付・時刻自体はコンピュータのシステム日付をとってきているだけ。

なので、もし「XAMPPのタイムスタンプが微妙にずれてきた」という問題だったら、単純に「XAMPPを設置しているコンピュータのシステム時刻がずれてきた」ということ。
コンピュータのシステム時刻はズレやすいが、そこはシステム管理者でなくても知っとくべき! Windowsサーバ/クライアントの時刻同期設定まとめ – TechNoteあたりを参考に、定期的にNTPサーバと時刻を同期させるようにすることで解決する。

5.php.iniをいじりたくない場合の対応方法

php.iniをいじりたくない場合は下記のようにコード中でタイムゾーンを指定可能。

date_default_timezone_set('Asia/Tokyo'); 
echo date("Y-m-d H-i-s");

6.まとめ

  • XAMPP for Windowsではデフォルトで”Europe/Berlin”となっている。
  • XAMMPP for macはデフォルトで”UTC”なっている。UTCは協定世界のこと。
  • どちらにしろ日本で使う場合には”Asia/Tokyo”に変更する必要がある。
  • タイムゾーンの設定などはあるものの、最終的にはシステム時刻からとってきている日付時刻に、タイムゾーン分の変更を加えているだけの値である。
  • php.iniをいじりたくない場合は、コード中でもタイムゾーンを指定することはできる

新しいローカル開発環境をつくることはそんなに頻繁にあることではなく、忘れやすいところなので注意が必要。

Xampp

Xampp

  • 作者: Jesse Russell,Ronald Cohn
  • 出版社/メーカー: Book on Demand Ltd.
  • 発売日: 2012/04/22
  • メディア: オンデマンド (ペーパーバック)
  • この商品を含むブログを見る
Webアプリエンジニア養成読本[しくみ、開発、環境構築・運用…全体像を最新知識で最初から! ] (Software Design plus)

Webアプリエンジニア養成読本[しくみ、開発、環境構築・運用…全体像を最新知識で最初から! ] (Software Design plus)

サーバ構築の実際がわかる Apache[実践]運用/管理 (Software Design plus)

サーバ構築の実際がわかる Apache[実践]運用/管理 (Software Design plus)

タイトルとURLをコピーしました