Lumen timezone 時區設定方法

來源:互聯網
上載者:User
今天用 Lumen 架構寫代碼時, 也是初次體驗 Lumen, 遇到了一個問題, 從資料庫裡查出的時間比資料庫裡儲存的 TIMESTAMP 時間慢了8個小時, 很明顯這是一個時區設定的問題, 本以為可以在1分鐘內解決的, 但是我錯了

根據 Laravel 4.x 和 5.0 的經驗, 只需要到 config/app.php 中設定下 ‘timezone' 參數為 ‘PRC' 就好了, 找到 Lumen 的 config 目錄, 在 /vendor/laravel/lumen-framework/config 路徑下, 但是 config/app.php 的參數選項中沒有 timezone 參數選項, 手動加上後也是無效的。

然後想到 Laravel 5 的 .env 檔案, 結果發現 Lumen 的 .env 檔案裡也沒有關於 timezone 設定的選項。

又回到 config 目錄, 看看 config/database.php 中的設定, 關於 mysql 的預設配置如下:

'mysql' => [ 'driver'  => 'mysql', 'host'   => env('DB_HOST', 'localhost'), 'port'   => env('DB_PORT', 3306), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset'  => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix'  => env('DB_PREFIX', ''), 'timezone' => env('DB_TIMEZONE','+00:00'), 'strict'  => false,],

在這裡有個資料庫的 timezone 設定, 預設 +00:00, 也就是 UTC 時間, 改成 +08:00 問題解決。由於項目啟用了 .env 設定檔, 所以最終是在 .env 檔案裡添加了一行

DB_TIMEZONE=+08:00

資料庫 timezone 問題解決。

資料庫的 timezone 問題雖然解決了, 但是 app 的 timezone 問題還沒解決, 全域搜尋 lumen 項目, 找用到 timezone 的地方, 在 /vendor/laravel/lumen-framework/src/Application.php 檔案中找到了初始化 lumen timezone 部分的代碼

/*** Create a new Lumen application instance.** @param string|null $basePath* @return void*/public function __construct($basePath = null){ date_default_timezone_set(env('APP_TIMEZONE', 'UTC')); $this->basePath = $basePath; $this->bootstrapContainer(); $this->registerErrorHandling();}

代碼中使用的 .env 參數為 APP_TIMEZONE, 值為 UTC, 在這裡將 UTC 改為 PRC, 或者在 .env 檔案裡添加

APP_TIMEZONE=PRC

lumen php 的時區設定問題解決。

Lumen 時區設定總結

編輯 .env 檔案添加配置

APP_TIMEZONE=PRCDB_TIMEZONE=+08:00

若沒啟用 .env 設定檔, 編輯

/vendor/laravel/lumen-framework/config/database.php/vendor/laravel/lumen-framework/src/Application.php

分別修改 APP_TIMEZONE 和 DB_TIMEZONE 參數值。

啟用 .env 設定檔

將 Lumen 根目錄下的 .env.example 檔案重新命名為 .env, 編輯 /bootstrap/app.php, 取消如下行代碼的注釋
Dotenv::load(__DIR__.'/../');

補充:

因為lumen預設使用格林尼治時間,需要轉成北京時間。
在.env中加入

APP_TIMEZONE=PRC
DB_TIMEZONE=+08:00

這樣時間就正確了

相關推薦:

php nginx 即時輸出的簡單實現方法的講解

PHP注釋文法規範與命名規範詳解

php語言注釋,單行注釋和多行注釋的相關內容

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.