artisan tinker 输出时间差 8 小时,已设置 cli php.ini 和 config/app.php 的 timezone=PRC 你们有遇到吗?

第一:系统时间肯定是正确的。
第二:cli 模式设置了 php.ini 时间区 data.timezone = 'PRC'; 其实 fpm php.ini 也同样设置了 http 访问没问题。
第三:laravel 框架本身 timezone=‘PRC’;
第四:单独用命令行运行 php 文件时间正确;

问题:用 php artisan tinker 包括其他命令如 queue 等等,只要是 artisan 下运行~时间就不对。
发现一:在 tinker 单独设置 date_default_timezone_set (PRC); 时间正常。单独在 Console/Command 设置时区也正确, 但是我不可能每个 Command 都设置时间吧。

在 http 访问或者 php 命令行访问

use Carbon\Carbon;
echo Carbon::now()->toDateTimeString();//时间正常
echo date_default_timezone_get();//返回PRC

在 tinker 或者其他 artisan 命令中都错

use Carbon\Carbon;
echo Carbon::now()->toDateTimeString();//时间差8小时
echo date_default_timezone_get();//返回Etc/GMT+0
终生学习者
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 11
终生学习者

@liyu001989 @overtrue 老师求助!已经没有办法了。

6年前 评论
leo

在 APPServiceProvider 的 register 方法里面调用 date_default_timezone_set (PRC); 就可以了

6年前 评论
终生学习者

为什么会有这个问题?难道是 artisan 转化了?如果是这样的解决方案我感觉不科学啊~~不像 laravel 的风格啊?总之没搞懂的。但是非常感谢你的这个解决方案

6年前 评论
终生学习者

@leo 刚刚试过你的方法,tinker 里还是不行。你试试

6年前 评论
终生学习者

@Wi1dcard 是啊,很恶心的啊。都不晓得咋个弄了。而且我有大量的队列,全部时间都出问题。我就的想为什么你们会没有遇到这个问题

6年前 评论

@一个菜鸟 心疼一波... 这种问题确实挺折磨的。

6年前 评论
sunxyw

config/app.php

'timezone' => 'Asia/Shanghai',
6年前 评论
终生学习者

@Wi1dcard 难道你真的没遇到这个问题????

6年前 评论