2021年9月17日金曜日

cakePHP で開発環境とレンタルサーバでデータベースを日本時間にする

 cakePHP3.9 をXAMPP上で開発しているプロジェクトをレンタルサーバ(XSERVER)上で動作させようとしたら、データベースの日本時間設定がうまくいかなかったので、まとめてみます。

まず、あちこちのサイトに書いてあるこの方法。

config/app.php

'App' => [
   ;
        'defaultTimezone' => env('APP_DEFAULT_TIMEZONE', 'Asia/Tokyo'),
   ;
'Datasources' => [
        'default' => [
                ;
            'timezone' => 'Asia/Tokyo',
                ;

この方法では XAMPP上のプロジェクトはちゃんと動作するけど、XSERVERで実行すると
Unknown or incorrect time zone: 'Asia/Tokyo'
というエラーが発生して、動作しません。

別のWEBサイトでの方法では、'Asia/Tokyo' の代わりに 'JST' を指定すればOK
という情報もありましたが・・・
Unknown or incorrect time zone: 'JST'
XSERVERでは動きませんでしたね。

MySQL の mysql テーブル timezoneをインポートして設定するといいのでしょうけれど
XSERVERでそれをやる方法がわかりませんでした

で、最終的にうまくいった方法を披露しておきます。

'App' => [
   ;
        'defaultTimezone' => env('APP_DEFAULT_TIMEZONE', 'Asia/Tokyo'),
   ;
'Datasources' => [
        'default' => [
                ;
            'timezone' => '+9:00',
                ;

Datasources側だけ、timezoneを '+9:00' に設定するわけです。
これでデータベース内の記録日時とWEBサイトで表示される日時を同期させることができました。
めでたし、めでたし。