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 session机制
Jul 17 PHP
解析zend Framework如何自动加载类
Jun 28 PHP
PHP魔术引号所带来的安全问题分析
Jul 15 PHP
php数组中删除元素之重新索引的方法
Sep 16 PHP
php实现删除指定目录下相关文件的方法
Oct 20 PHP
linux中cd命令使用详解
Jan 08 PHP
php获取json数据所有的节点路径
May 17 PHP
php数字每三位加逗号的功能函数
Oct 22 PHP
php生成二维码图片方法汇总
Dec 17 PHP
PHP API接口必备之输出json格式数据示例代码
Jun 27 PHP
PHP上传图片到数据库并显示的实例代码
Dec 20 PHP
PhpStorm2020.1 安装 debug - Postman 调用的详细教程
Aug 17 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
玩转图像函数库―常见图形操作
2006/09/03 PHP
PHP的面向对象编程
2006/10/09 PHP
php4的session功能评述(二)
2006/10/09 PHP
php 分页类 扩展代码
2009/06/11 PHP
PHP中对用户身份认证实现两种方法
2011/06/04 PHP
搭建Vim为自定义的PHP开发工具的一些技巧
2015/12/11 PHP
浅析Yii2集成富文本编辑器redactor实例教程
2016/04/25 PHP
php无限级分类实现方法分析
2016/10/19 PHP
php中文语义分析实现方法示例
2019/09/28 PHP
在Laravel 的 Blade 模版中实现定义变量
2019/10/14 PHP
HTML页面,测试JS对C函数的调用简单实例
2016/08/09 Javascript
jQuery插件echarts设置折线图中折线线条颜色和折线点颜色的方法
2017/03/03 Javascript
利用Vue v-model实现一个自定义的表单组件
2017/04/27 Javascript
JavaScript实现自动跳转文本功能
2017/05/25 Javascript
浅谈vue2 单页面如何设置网页title
2017/11/08 Javascript
jQuery+Cookie实现切换皮肤功能【附源码下载】
2018/03/25 jQuery
浅谈Node.js 中间件模式
2018/06/12 Javascript
详解Vue之父子组件传值
2019/04/01 Javascript
详解从vue-loader源码分析CSS Scoped的实现
2019/09/23 Javascript
NodeJS实现一个聊天室功能
2019/11/25 NodeJs
vue实现单一筛选、删除筛选条件
2020/10/26 Javascript
详解Vue的异步更新实现原理
2020/12/22 Vue.js
[02:51]2018年度DOTA2最佳中单位选手-完美盛典
2018/12/17 DOTA
Python内置的字符串处理函数详细整理(覆盖日常所用)
2014/08/19 Python
利用python求解物理学中的双弹簧质能系统详解
2017/09/29 Python
Python实现的大数据分析操作系统日志功能示例
2019/02/11 Python
Python 存储字符串时节省空间的方法
2019/04/23 Python
python使用socket 先读取长度,在读取报文内容示例
2019/09/26 Python
联想加拿大官方网站:Lenovo Canada
2018/04/05 全球购物
匡威西班牙官网:Converse西班牙
2019/10/01 全球购物
AJAX的优缺点都有什么
2015/08/18 面试题
幼儿教师个人求职信范文
2013/09/21 职场文书
财务部副经理岗位职责范本
2014/06/17 职场文书
公务员考察材料范文
2014/12/23 职场文书
SpringCloud之@FeignClient()注解的使用方式
2021/09/25 Java/Android
动视暴雪取消疫苗禁令 让所有员工返回线下工作
2022/04/03 其他游戏