Laravel Schedule:list 产生 DateTimeZone 错误

Laravel Schedule:list produces DateTimeZone error

描述

在创建我的第一个计划命令时,尝试使用

列出我的计划
php artisan schedule:list

抛出错误:

DateTime::setTimezone(): Argument #1 ($timezone) must be of type DateTimeZone, null given at vendor/laravel/framework/src/Illuminate/Console/Scheduling/ScheduleListCommand.php:43

将我的命令更改为

php artisan schedule:list --timezone=Europe/London

给出:

DateTime::setTimezone(): Argument #1 ($timezone) must be of type DateTimeZone, string given at vendor/laravel/framework/src/Illuminate/Console/Scheduling/ScheduleListCommand.php:43

重现步骤:

我的日程安排:

$schedule->command('email:expired-licences')->weekdays()->at('08:00');

我的自定义命令实际上还没有执行任何操作。

最终我找到了一个解决方案,如果我编辑 ScheduleListCommand.php 变化:

->setTimezone($this->option('timezone', config('app.timezone')))

->setTimezone(new DateTimeZone($this->option('timezone', config('app.timezone'))))

但只有当我使用 --timezone=Europe/London 开关时(不确定是否需要),否则 $this->option 似乎不接受配置('app.timezone') 作为默认值。

甚至:

$schedule->command('route:list')->weekdays()->at('08:00');

在我的系统上不起作用 - 不确定发生了什么。

这是 laravel\framework\src\Illuminate\Console\Scheduling\ScheduleListCommand.php 中的错误,已在 v8.79.0 release

中修复