這個問題以為1分鍾就可以搞定,但是我錯了,怎么修改也不行,在網上看到很多時區的修改問題大多數都是改數據庫的時區和加8:00等操作,對我來說根本無濟於事沒有用。最后終於看到的對我起作用的文檔。收藏一下。
我用到的:(基本前面的操作我之前在數據庫的my.cnf中都看過了,我就沒去操作,直接走的在env里面操作增加時區8:00這個就可以了)
引用別人的文章。:
根據 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 的默認配置如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
'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 部分的代碼
1
2
3
4
5
6
7
8
9
10
11
12
13
|
/**
* 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 文件添加配置
1
2
|
APP_TIMEZONE=PRC
DB_TIMEZONE=+08:00
|
若沒啟用 .env 配置文件, 編輯
1
2
|
/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
這樣時間就正確了