artisan 导致的时区问题
1:我已经设置了php.ini以及laravel框架的app.timezone时区
2:为了准确性我在artisan入口文件直接输出时间区
echo date_default_timezone_get();//输出正确的时间区PRC
$kernel = $app->make(Illuminate\Contracts\Console\Kernel::class);
$status = $kernel->handle(
$input = new Symfony\Component\Console\Input\ArgvInput,
new Symfony\Component\Console\Output\ConsoleOutput
);
以上说明php.ini配置正确。
3:我进入artisan tinker,先获取laravel框架的时间区。
>>> config('app.timezone')
=> "PRC"
以上说明laravel框架config时区配置正确。
4:我系统时间肯定也正确
root@homestead:~# date "+%Y-%m-%d %H:%M:%S"
2018-12-08 13:58:37
以上说明系统时间正确。
最后问题是:只要是在artisan下输出时间就时区就不对,相差8小时
>>> date_default_timezone_get()
=> "Etc/GMT+0"
1:尝试过在APPServiceProvider 的 register 方法里面调用 date_default_timezone_set(PRC);也不行。
2:唯一可行的方式就是哪里用到,就在哪里set('PRC'),但是这样很麻烦。所以我感觉是artisan 截断了时区一样!!!???
3:我搜索全局date_default_timezone_set,有一个地方
\vendor\laravel\framework\src\Illuminate\Foundation\Bootstrap\LoadConfiguration.php:
49: date_default_timezone_set($config->get('app.timezone', 'UTC'));
echo date_default_timezone_get();//输出正确的时间区PRC
51 mb_internal_encoding('UTF-8');
我也断个点输出时间正常,但是回到artisan也不对了。
困扰几天了,希望有人遇到过这个问题。
推荐文章: