Laravel Schedule:list 产生 DateTimeZone 错误
Laravel Schedule:list produces DateTimeZone error
- Laravel版本:8.78.1
- PHP版本:8.0.10
描述
在创建我的第一个计划命令时,尝试使用
列出我的计划
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
中修复
- Laravel版本:8.78.1
- PHP版本:8.0.10
描述
在创建我的第一个计划命令时,尝试使用
列出我的计划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