CodeLab技術ブログ

プログラミング技術まとめ

[CakePHP3.7]TimeZone設定について

CakePHP3では、そのまま使うとTimeZoneがUCTになってしまって、日本国内だけで使う場合はいろいろと面倒なことが起こりますので、日本のタイムゾーンの設定を行います。

バージョン
CakePHP 3.8

スポンサードリンク

/config/app.phpの値の変更する

データベースのタイムゾーン設定を書き換えます

// /config/app
   'Datasources' => [
        'default' => [
///中略///
//          'timezone' => 'UTC',
            'timezone' => 'Asia/Tokyo',
// /config/app
    'App' => [
///中略///
//        'defaultLocale' => env('APP_DEFAULT_LOCALE', 'en_US'),
         'defaultLocale' => env('APP_DEFAULT_LOCALE', 'ja_JP'),
///中略///
//      'defaultTimezone' => env('APP_DEFAULT_TIMEZONE', 'UTC'),
        'defaultTimezone' => env('APP_DEFAULT_TIMEZONE', 'Asia/Tokyo'),

なお、CakePHP3.4以前のバージョンの場合は、/config/bootstrap.phpにあるdate_default_timezone_set()を’Asia/Tokyo’に変更する必要もあるようです。

また、もしサーバーの設定が可能であれば
/etc/php.iniに以下の設定を行っておくとよいと思います。

[Date]
date.timezone = Asia/Tokyo

これで実行して以下のようなエラーが出る場合は、MySQLサーバーの設定が必要です。
Error: SQLSTATE[HY000]: General error: 1298 Unknown or incorrect time zone: ‘Asia/Tokyo’
mysql.timezone テーブルに何も登録がないはずです。

下記のURLからタイムゾーンを設定するSQLファイルをダウンロードします。
https://dev.mysql.com/downloads/timezones.html

おそらく、
timezone_(西暦)b_posix_sql.zip
という感じのファイルがあると思いますので、こちらを取得、展開して、データベース”mysql”を選択してインポートしてください。

これで、日本時間での表示が可能になるはずです。

スポンサードリンク
スポンサードリンク
スポンサードリンク

コメントは受け付けていません。