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
终生学习者
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 11
终生学习者

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

5年前 评论
leo

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

5年前 评论
终生学习者

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

5年前 评论
终生学习者

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

5年前 评论
终生学习者

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

5年前 评论

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

5年前 评论
sunxyw

config/app.php

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

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

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!