PHP
Docker

PHP用dockerでtimezoneを日本時間に設定する

More than 1 year has passed since last update.

PHP開発用のdocker、prgyukke/Docker_for_PHPを作った際に、timezoneを日本時間に設定したのでその設定方法のメモです。


設定方法

PHPのtimezoneを変更する際には下記の2つの設定が必要となります。

①サーバローカルのtimezone設定

②php.iniでのtimezone設定

上記の両方が設定されていてはじめてPHPで処理する際のtimezoneが意図通り正しく変更されます。


①サーバローカルのtimezone設定

今回の場合、コンテナのtimezoneの設定方法となりますが、該当するコンテナのdockerfileに下記を記載してください。(コンテナのOS想定はubuntuです。)

ENV TZ Asia/Tokyo

RUN echo "${TZ}" > /etc/timezone \
&& dpkg-reconfigure -f noninteractive tzdata


②php.iniでのtimezone設定

PHPの設定ファイルであるphp.iniは予めこちらで用意し、コンテナにマウントしてあげることで設定をしましょう。

今回はデフォルト言語の日本語設定もしてしまいます。

php.ini

[Date]

date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.internal_encoding = "UTF-8"
mbstring.language = "Japanese"

上記のphp.iniをPHP用のコンテナにマウントします。

下記をコンテナ用のdockerfileに記載してください。

ADD ./php.ini /usr/local/etc/php/php.ini


まとめ

上記設定後、dockerを起動しphpinfo()で確認するとtimezoneが無事、Asia/Tokyoに設定されているのがわかります。

e0fa7046b135d260a49e52fdadfca2f4.png

設定が変更されていない場合は、一度関連するコンテナを削除する、設定対象のコンテナが正しいかを確認するなどをお試しください。