あまり触らないところなので毎回忘れるためいい加減メモを残す。
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をいじりたくない場合は、コード中でもタイムゾーンを指定することはできる
新しいローカル開発環境をつくることはそんなに頻繁にあることではなく、忘れやすいところなので注意が必要。
- 作者: Jesse Russell,Ronald Cohn
- 出版社/メーカー: Book on Demand Ltd.
- 発売日: 2012/04/22
- メディア: オンデマンド (ペーパーバック)
- この商品を含むブログを見る
Webアプリエンジニア養成読本[しくみ、開発、環境構築・運用…全体像を最新知識で最初から! ] (Software Design plus)
- 作者: 和田裕介,石田絢一(uzulla),すがわらまさのり,斎藤祐一郎
- 出版社/メーカー: 技術評論社
- 発売日: 2014/03/11
- メディア: 大型本
- この商品を含むブログ (5件) を見る
サーバ構築の実際がわかる Apache[実践]運用/管理 (Software Design plus)
- 作者: 鶴長鎮一
- 出版社/メーカー: 技術評論社
- 発売日: 2012/03/23
- メディア: 単行本(ソフトカバー)
- 購入: 6人 クリック: 109回
- この商品を含むブログ (12件) を見る