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连接Oracle数据库
Oct 09 PHP
pw的一个放后门的方法分析
Oct 08 PHP
在同一窗体中使用PHP来处理多个提交任务
May 08 PHP
PHP中strtotime函数使用方法分享
Jan 10 PHP
洪恩在线成语词典小偷程序php版
Apr 20 PHP
php json与xml序列化/反序列化
Oct 28 PHP
PDO防注入原理分析以及使用PDO的注意事项总结
Oct 23 PHP
ThinkPHP实现动态包含文件的方法
Nov 29 PHP
PHP7.1方括号数组符号多值复制及指定键值赋值用法分析
Sep 26 PHP
PHP利用超级全局变量$_GET来接收表单数据的实例
Nov 05 PHP
PHP格式化显示时间date()函数代码
Oct 03 PHP
laravel 操作数据库常用函数的返回值方法
Oct 11 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
php cookies中删除的一般赋值方法
2011/05/07 PHP
php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
2013/09/28 PHP
php导出excel格式数据问题
2014/03/11 PHP
PHP实现图片批量打包下载功能
2017/03/01 PHP
JQuery.uploadify 上传文件插件的使用详解 for ASP.NET
2010/01/22 Javascript
火狐下table中创建form导致两个table之间出现空白
2013/09/02 Javascript
JavaScript之AOP编程实例
2015/07/17 Javascript
Jquery+Ajax+PHP+MySQL实现分类列表管理(下)
2015/10/28 Javascript
纯JavaScript基于notie.js插件实现消息提示特效
2016/01/18 Javascript
详解angularjs利用ui-route异步加载组件
2017/05/21 Javascript
微信小程序 开发MAP(地图)实例详解
2017/06/27 Javascript
日期时间范围选择插件:daterangepicker使用总结(必看篇)
2017/09/14 Javascript
vue input输入框关键字筛选检索列表数据展示
2020/10/26 Javascript
Element-ui中元素滚动时el-option超出元素区域的问题
2019/05/30 Javascript
javascript实现蒙版与禁止页面滚动
2020/01/11 Javascript
微信小程序自定义底部弹出框功能
2020/11/18 Javascript
Python实现遍历windows所有窗口并输出窗口标题的方法
2015/03/13 Python
详解在Python程序中自定义异常的方法
2015/10/16 Python
Pytorch使用MNIST数据集实现CGAN和生成指定的数字方式
2020/01/10 Python
从训练好的tensorflow模型中打印训练变量实例
2020/01/20 Python
css3绘制天猫logo实现代码
2012/11/06 HTML / CSS
Lookfantastic西班牙官网:英国知名美妆购物网站
2018/06/13 全球购物
加拿大在线旅游公司:Flighthub
2019/03/11 全球购物
银行批评与自我批评
2014/02/10 职场文书
创建市级文明单位实施方案
2014/03/01 职场文书
蓝颜请假条
2014/04/11 职场文书
网络文明传播志愿者活动方案
2014/08/20 职场文书
2014年最新党员对照检查材料汇总
2014/09/15 职场文书
学生不讲诚信检讨书
2014/09/29 职场文书
教师自查自纠材料
2014/10/14 职场文书
公务员年终个人总结
2015/02/12 职场文书
关于清明节的演讲稿2015
2015/03/18 职场文书
导游词之江南园林狮子林
2019/09/16 职场文书
Nginx 过滤静态资源文件的访问日志的实现
2021/03/31 Servers
简单聊聊Vue中的计算属性和属性侦听
2021/10/05 Vue.js
Django框架中模型的用法
2022/06/10 Python