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
@liyu001989 @overtrue 老师求助!已经没有办法了。
在 APPServiceProvider 的 register 方法里面调用 date_default_timezone_set(PRC); 就可以了
为什么会有这个问题?难道是artisan转化了?如果是这样的解决方案我感觉不科学啊~~不像laravel的风格啊?总之没搞懂的。但是非常感谢你的这个解决方案
@leo 刚刚试过你的方法,tinker里还是不行。你试试
居然还没解决。
@Wi1dcard 是啊,很恶心的啊。都不晓得咋个弄了。而且我有大量的队列,全部时间都出问题。我就的想为什么你们会没有遇到这个问题
@一个菜鸟 心疼一波... 这种问题确实挺折磨的。
config/app.php
@Wi1dcard 难道你真的没遇到这个问题????
从来没遇到过。
教科书式提问 :grin: