Edited at

Laravel Homesteadの日本時間設定をする

More than 1 year has passed since last update.

アプリでJSTの場合。

MySQLなんかもデフォルトだとシステムのタイムゾーンに依存しているので、Carbonを使わなくてもDBをJSTに統一する場合は設定をした方がいいかも。

Carbonはphpのdatetimeのラッパーですが、アプリ側でtimestampを押す時や、現在時刻との比較など便利です。

それはある日、tinkerでCarbonを使ってみた時。

>>> Carbon\Carbon::now()

=> Carbon\Carbon @1517950563 {#836
date: 2018-02-07 05:56:03.330975 Asia/Tokyo (+09:00),
}

よくよくみたら一週間くらいズレているやんけ!(2018-02-15 確認)

右のAsia/Tokyoはアプリ側(config/app.php)なんですが、Homestead側がダメっぽいです。

Homestead環境だとNTPサーバが正しく設定されてないようです。


$ date
Tue Feb 6 20:57:59 UTC 2018


localtime設定

ジャポンにする。

$ sudo ln -sf /usr/share/zoneinfo/Japan /etc/localtime


NTP設定

ジパングにする。

$ sudo ntpdate -v ntp.nict.jp

The program 'ntpdate' is currently not installed. You can install it by typing:
sudo apt install ntpdate

初期装備だとntpdateが入っていないらしい。

$ sudo apt install ntpdate

$ sudo ntpdate -v ntp.nict.jp

15 Feb 13:12:57 ntpdate[3191]: no servers can be used, exiting

exitingがexistingに空目するし、excitingにも見える。

なんか直ってたっぽい。

$ date

Thu Feb 15 13:13:08 JST 2018

tinkerで確認する。

>>> Carbon\Carbon::now()

=> Carbon\Carbon @1518671225 {#814
date: 2018-02-15 14:07:05.316495 Asia/Tokyo (+09:00),
}

ひとあんしん。

Eloquentで取ってくるレコードも変わってくるので重要。

アプリ周りのエラーにつながるのでHomestead初期装備のままだとあかんということか。