[Heroku] タイムゾーンの設定各種

heroku環境でタイムゾーンの設定が色々あったのでまとめ。

サーバー時間

まずは、herokuのサーバー時間のタイムゾーン設定。
これは簡単で、環境変数に入れてやるだけ。

TZ : Asia/Tokyo

コマンドで入れる場合は以下。

1
$ heroku config:add TZ=Asia/Tokyo -a APP_NAME

きちんと反映されているかどうかは下記コマンドから参照可能。
意図した時間が返ってきてればOK。

1
2
3
$ heroku run date -a APP_NAME
Running date on ⬢ APP_NAME... up, run.1198
Thu Sep  1 10:06:57 JST 2016

参考

PHP

PHPの設定でタイムゾーンを指定する場合。
通常は、 php.ini で設定するが、herokuの場合は、 .user.ini ファイルを使う。

ドキュメントルート直下に .user.ini ファイルを設置。
中に以下を記述。

1
date.timezone = "Asia/Tokyo"

この設定ではその他にはアップロードの最大容量なんかを指定する場合が多い。
参考 : [PHP][heroku]upload_max_filesizeを変更する – KayaMemo

参考

WordPress

最後はherokuと直接は関係ないけれど、wordpressのタイムゾーン。
WordPressのタイムゾーンはデフォルトで標準時になるようにしてある、とのこと。
しかしこれは設定で変更するものではなく、取得する際に調整するもののよう。

一番簡易なものとしては、 date 関数で取得していた箇所をWordPress関数である、 date_i18n を利用して取得するようにする、というもの。
これだけで、日本時間で取得できるようになる。

1
date_i18n('Y-m-d H:i:s');

その他では、 datetime クラスを使用してタイムゾーンを指定する方法もあり。

1
2
$now = new DateTime('', new DateTimeZone('Asia/Tokyo'));
$now->format('Y-m-d H:i:s');

参考

まとめ

WordPressはともかく、herokuとPHPのタイムゾーン設定はherokuでPHPを使うのなら、デフォルトで設定しておいた方が後々間違いがなさそう。
環境構築の際にまず設定しておくとよさげ。

   このエントリーをはてなブックマークに追加