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


Posted in PHP onJanuary 20, 2018

根据 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_TIMEZONE 参数值。

启用 .env 配置文件

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

补充:

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

APP_TIMEZONE=PRC
DB_TIMEZONE=+08:00

这样时间就正确了

PHP 相关文章推荐
PHP 获取MySQL数据库里所有表的实现代码
Jul 13 PHP
PHP设计模式 注册表模式
Feb 05 PHP
php类常量的使用详解
Jun 08 PHP
测试php连接mysql是否成功的代码分享
Jan 24 PHP
php读取目录所有文件信息dir示例
Mar 18 PHP
php基于openssl的rsa加密解密示例
Jul 11 PHP
PHP单态模式简单用法示例
Nov 16 PHP
thinkPHP框架实现的无限回复评论功能示例
Jun 09 PHP
php 调用百度sms来发送短信的实现示例
Nov 02 PHP
php实现文章评论系统
Feb 18 PHP
Laravel 在views中加载公共页面的实现代码
Oct 22 PHP
PHP单元测试配置与使用方法详解
Dec 27 PHP
PHP Class SoapClient not found解决方法
Jan 20 #PHP
tp5(thinkPHP5)操作mongoDB数据库的方法
Jan 20 #PHP
php实现的mongoDB单例模式操作类
Jan 20 #PHP
PHP实现合并两个排序链表的方法
Jan 19 #PHP
php利用ob_start()清除输出和选择性输出的方法
Jan 18 #PHP
php通过header发送自定义数据方法
Jan 18 #PHP
PHP实现从上往下打印二叉树的方法
Jan 18 #PHP
You might like
通过ODBC连接的SQL SERVER实例
2006/10/09 PHP
MySQL的FIND_IN_SET函数使用方法分享
2012/03/27 PHP
PHP获取指定月份第一天和最后一天的方法
2015/07/18 PHP
javascript 面向对象编程 聊聊对象的事
2009/09/17 Javascript
Jquery 获得服务器控件值的方法小结
2010/05/11 Javascript
javascript 禁用IE工具栏,导航栏等等实现代码
2013/04/01 Javascript
javascript中this的四种用法
2015/05/11 Javascript
JavaScript中的acos()方法使用详解
2015/06/14 Javascript
javascript通过获取html标签属性class实现多选项卡的方法
2015/07/27 Javascript
使用JQuery实现智能表单验证功能
2016/03/08 Javascript
json对象与数组以及转换成js对象的简单实现方法
2016/06/24 Javascript
jQuery.form.js插件不能解决连接超时(timeout)的原因分析及解决方法
2016/10/14 Javascript
AngularJS解决ng界面长表达式(ui-set)的方法分析
2016/11/07 Javascript
微信公众平台开发教程(六)获取个性二维码的实例
2016/12/02 Javascript
Bootstrap CSS组件之导航条(navbar)
2016/12/17 Javascript
html5+CSS 实现禁止IOS长按复制粘贴功能
2016/12/28 Javascript
Angular2 路由问题修复详解
2017/03/01 Javascript
Vue.js鼠标悬浮更换图片功能
2017/05/17 Javascript
关于js中的鼠标事件总结
2017/07/11 Javascript
vue中过滤器filter的讲解
2019/01/21 Javascript
跟老齐学Python之print详解
2014/09/28 Python
Python拼接微信好友头像大图的实现方法
2018/08/01 Python
对python判断ip是否可达的实例详解
2019/01/31 Python
Python开发之Nginx+uWSGI+virtualenv多项目部署教程
2019/05/13 Python
HTML5之WebGL 3D概述(上)—WebGL原生开发开启网页3D渲染新时代
2013/01/31 HTML / CSS
Trunki英国官网:儿童坐骑式行李箱
2017/05/30 全球购物
加拿大城市本地限时优惠:Buytopia.ca
2018/09/19 全球购物
工厂采购员岗位职责
2014/04/08 职场文书
人力资源管理专业自荐书
2014/07/07 职场文书
教师党员个人整改措施材料
2014/09/16 职场文书
2014年除四害工作总结
2014/12/06 职场文书
通知书大全
2015/04/27 职场文书
毕业设计工作总结
2015/08/14 职场文书
世界文化遗产导游词
2019/08/07 职场文书
vue使用v-model进行跨组件绑定的基本实现方法
2021/04/28 Vue.js
JavaScript中isPrototypeOf函数
2021/11/07 Javascript