DEVELOPERS BLOGデベロッパーズブログ
CakePHP 3.6.2 で気づいたのだが、既定値で運用するとデータベースへの日時 (DateTime) の保存は UTC に変換されて保存される。
読み取りの際はそのまま created や modified フィールドの値が返ってくるので、日時がずれてしまう。
これは、CakePHP 3.6.2 の {CONFIG}/app.php の ’APP' 設定で、
'defaultTimezone' =>env('APP_DEFAULT_TIMEZONE', 'UTC')
となっているのが原因と考えられる。
取り敢えずこの値を
'defaultTimezone' => env('APP_DEFAULT_TIMEZONE', 'JST')
とし、また念のためその直前の 'defaultLocale' も
'defaultLocale' => env('APP_DEFAULT_LOCALE', 'ja_JP')
に変更しておくことで表示側もデータベース上も JST で記録されるようになる。
これは、XSERVER の PHP7 がタイムゾーンとして JST を認識するためと思われる。(通常の LAMP 環境では既定値のタイムゾーン情報には JST は含まれていないので注意。)
なお、ネット検索すると 'JST' とした箇所を PHP 向けの 'Asia/Tokyo' とする方法がヒットするが、この方法を使用すると 'defaultTimezone' 設定がデータソースでも使用されるため、データベース側 (MySQL 等が 'Asia/Tokyo' を解釈できないとコネクションエラーとなって接続できない。データベース側のタイムゾーンリストを修正できるのであればよいが、共用サーバー等で勝手に変更できない場合は 'Asia/Tokyo' は使えない点に注意。)
この記事は加藤 正人さんが書いています!
- 氏名
- 加藤 正人
- 役職
- 多分SE
- 血液型
- 秘密
- 出没
- 美味しいもののあるところ
- 特色
- タヒチ大好き。ちょいメタボ。
- 2020/12/15
- CakePHP3 のリダイレクトがうまく行かない例
- 2020/11/12
- Apache Bench
- 2020/10/05
- PhpSpreadsheet でExcel ファイルを読み込む (CakePHP3)
関連エントリー
- 2016/04/09
- XSERVER で CakePHP 3.x が Fatal error
2020/12/15
2020/11/12
2020/10/05
2020/09/11
2020/08/03