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 相关文章推荐
Zend公司全球首推PHP认证
Oct 09 PHP
php调用mysql存储过程
Feb 14 PHP
提高php运行速度的一些小技巧分享
Jul 03 PHP
php输出xml格式字符串(用的这个)
Jul 12 PHP
如何使用php输出时间格式
Aug 31 PHP
php中通过curl检测页面是否被百度收录
Sep 27 PHP
那些年我们错过的魔术方法(Magic Methods)
Jan 14 PHP
php实现的RSS生成类实例
Apr 23 PHP
PHP引用返回用法示例
May 28 PHP
php获取用户真实IP和防刷机制的实例代码
Nov 28 PHP
Linux下安装Memcached服务器和客户端与PHP使用示例
Apr 15 PHP
PHP设计模式入门之迭代器模式原理与实现方法分析
Apr 26 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
一个更简单的无限级分类菜单代码
2007/01/16 PHP
php 获取全局变量的代码
2011/04/21 PHP
PHP读书笔记整理_结构语句详解
2016/07/01 PHP
php注册审核重点解析(数据访问)
2017/05/23 PHP
PHP聚合式迭代器接口IteratorAggregate用法分析
2017/12/28 PHP
jquery cookie插件代码类
2009/05/26 Javascript
firefox插件Firebug的使用教程
2010/01/02 Javascript
jQuery Flash/MP3/Video多媒体插件
2010/01/18 Javascript
兼容IE、FireFox、Chrome等浏览器的xml处理函数js代码
2011/11/30 Javascript
基于jquery实现状态限定编辑的代码
2012/02/11 Javascript
event对象获取方法总结在google浏览器下测试
2013/11/03 Javascript
javascript 数字格式化输出的实现代码
2013/12/10 Javascript
Jqgrid表格随窗口大小改变而改变的简单实例
2013/12/28 Javascript
jQuery中的val()示例应用
2014/02/26 Javascript
Angular.js如何从PHP读取后台数据
2016/03/24 Javascript
BootStrap初学者对弹出框和进度条的使用感觉
2016/06/27 Javascript
jQuery实现的省市联动菜单功能示例【测试可用】
2017/01/13 Javascript
详解JavaScript的BUG和错误
2018/05/07 Javascript
JQuery判断radio单选框是否选中并获取值的方法
2019/01/17 jQuery
javascript实现函数柯里化与反柯里化过程解析
2019/10/08 Javascript
vue项目打包之开发环境和部署环境的实现
2020/04/23 Javascript
基于scrapy实现的简单蜘蛛采集程序
2015/04/17 Python
Python+Turtle动态绘制一棵树实例分享
2018/01/16 Python
Python多线程编程之多线程加锁操作示例
2018/09/06 Python
Python数据分析模块pandas用法详解
2019/09/04 Python
Python函数必须先定义,后调用说明(函数调用函数例外)
2020/06/02 Python
使用Python将xmind脑图转成excel用例的实现代码(一)
2020/10/12 Python
雅诗兰黛香港官网:Estee Lauder香港
2017/09/26 全球购物
Java基础面试题
2014/07/19 面试题
物流专业大学生的自我鉴定
2013/11/13 职场文书
会议邀请书范文
2014/02/02 职场文书
作风大整顿心得体会
2014/09/10 职场文书
2014企业年终工作总结
2014/12/23 职场文书
初中教师个人总结
2015/02/10 职场文书
sql中mod()函数取余数的用法
2021/05/29 SQL Server
mysql数据库隔离级别详解
2022/06/16 MySQL