• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Lumen timezone 时区设置方法(慢了8个小时)

php 搞代码 4年前 (2022-01-01) 38次浏览 已收录 0个评论

今天用 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=PRC DB_TIMEZONE=+08:00

若没启用 .env 配置文件, 编辑

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

分别修改 APP_TIMEZONE 和 DB_TI

来源gao!%daima.com搞$代*!码网

MEZONE 参数值。

启用 .env 配置文件

将 Lumen 根目录下的 .env.example 文件重命名为 .env, 编辑 /bootstrap/app.php, 取消如下行代码的注释
Dotenv::load(__DIR__.’/../’);

补充:

因为lumen默认使用格林尼治时间,需要转成北京时间。
在.env中加入

APP_TIMEZONE=PRC
DB_TIMEZONE=+08:00

这样时间就正确了

以上就是Lumen timezone 时区设置方法(慢了8个小时)的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Lumen timezone 时区设置方法(慢了8个小时)

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址