LoginSignup
2
0

More than 3 years have passed since last update.

AWS EC2にPHP7.3.2を入れたらTimezoneがおかしかった話

Last updated at Posted at 2019-05-11

概要

  • 1:Amazon Linux 2にPHP7.3.2を入れたら、、
    • OSのタイムゾーン設定はAsia/Tokyo
    • timezoneをAsia/Tokyoにしてるにも関わらずUTCの日時になる
    • 他のtimezoneに設定してもやっぱりUTCの日時になる
    • なお、pythonでは問題なかった
  • 2:PHP 7.3.3にupdateしたら解決した
    • ちゃんとJSTな日時が取れた

1:Amazon Linux 2にPHP7.3.2を入れた

yumでインストールした。
OSのタイムゾーン設定はAsia/Tokyo。

$ strings /etc/localtime
TZif2
TZif2
JST-9
$ sudo cat /etc/sysconfig/clock 
ZONE="Asia/Tokyo"
UTC=false
$ sudo timedatectl
      Local time: 日 2019-03-31 11:46:36 JST
  Universal time: 日 2019-03-31 02:46:36 UTC
        RTC time: 日 2019-03-31 02:46:36
       Time zone: Asia/Tokyo (JST, +0900)
     NTP enabled: yes
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a
$ date
2019年  3月 31日 日曜日 11:46:51 JST

PHPのtimezoneをAsia/Tokyoにしてるにも関わらずUTCの日時になる。
なんでやの。

$ php -v
PHP 7.3.2 (cli) (built: Feb 15 2019 19:06:47) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.2, Copyright (c) 1998-2018 Zend Technologies
$ less /etc/php.ini | grep "date.timezone"
; http://php.net/date.timezone
date.timezone = Asia/Tokyo
$ php -a
Interactive shell

php > echo date_default_timezone_get();
Asia/Tokyo
php > echo date("Y/m/d H:i:s P");
2019/03/31 02:47:17 +00:00

他のtimezoneに設定してもやっぱりUTCの日時になる

$ php -a
Interactive shell
php > echo date_default_timezone_set("Asia/Taipei");
1
php > echo date("Y/m/d H:i:s P");
2019/03/31 03:15:01 +00:00
php > echo date_default_timezone_get();
Asia/Taipei
php > echo date_default_timezone_set("Europe/Berlin");
1
php > echo date_default_timezone_get();
Europe/Berlin
php > echo date("Y/m/d H:i:s P");
2019/03/31 03:15:45 +00:00
php > exit
$ date
2019年  3月 31日 日曜日 12:19:06 JST

なお、Pythonでは問題なかった。

$ python
Python 2.7.14 (default, Jul 26 2018, 19:59:38) 
[GCC 7.3.1 20180303 (Red Hat 7.3.1-5)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 
>>> from datetime import datetime
>>> datetime.now().strftime("%Y/%m/%d %H:%M:%S")
'2019/03/31 11:48:04'
$ python3
Python 3.7.2 (default, Feb 26 2019, 20:08:16) 
[GCC 7.3.1 20180303 (Red Hat 7.3.1-5)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from datetime import datetime
>>> datetime.now().strftime("%Y/%m/%d %H:%M:%S")
'2019/03/31 11:52:45'

ChangeLogをパッと見た限りではタイムゾーンのバグらしきものは見当たらず。
https://www.php.net/ChangeLog-7.php#7.3.3
 

2:PHP 7.3.3にupdateしたら解決

とりあえずよく分からんので、PHP 7.3.3にアップデートしたら問題は解消した謎。

$ sudo yum update

アップデート後

$ php -v
PHP 7.3.3 (cli) (built: Apr  3 2019 18:43:11) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.3, Copyright (c) 1998-2018 Zend Technologies
$ date
2019  5 11 土曜日 19:26:26 JST
$ php -a
Interactive shell

php > echo date_default_timezone_get();
Asia/Tokyo
php > echo date("Y/m/d H:i:s");
2019/05/11 19:26:39
php > 

問題なし。
いったい何だったんだろうか。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0