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
に設定されているのがわかります。
設定が変更されていない場合は、一度関連するコンテナを削除する、設定対象のコンテナが正しいかを確認するなどをお試しください。