3

我正在与Schedularin合作Laravel 5.8。设置后CommandsCommand Kernal我收到错误,

在 /home/SERVER_USER_NAME/public_html/vendor/symfony/console/Input/ArgvInput.php:261 为 foreach() 提供的参数无效)

下面是Kernal方法,

protected $commands = [
    Commands\OfferMonitor::class,
    Commands\RankingCommand::class,
    Commands\CreditCycle::class,
];

protected function schedule(Schedule $schedule)
{
    $schedule->command('KG:OfferMonitor')->dailyAt('01:00');
    $schedule->command('KG:UpdateRanks')->everyTenMinutes();
    $schedule->command('KG:CreditCycle')->dailyAt('00:00');
}

这是我Laravel Cron Job在生产服务器上的运行, 定时任务

我认为 cron 作业本身会引发错误,我使用的是php二进制而不是php-cli. 是否导致错误?如果是的话,这个问题的解决方法是什么?

这是来自 Laravel 的完整错误日志和堆栈跟踪,

Invalid argument supplied for foreach() {"exception":"[object] (ErrorException(code: 0): Invalid argument supplied for foreach() at /home/SERVER_USER_NAME/public_html/vendor/symfony/console/Input/ArgvInput.php:261)
[stacktrace]
#0 /home/SERVER_USER_NAME/public_html/vendor/symfony/console/Input/ArgvInput.php(261): Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleError(2, 'Invalid argumen...', '/home/SERVER_USER_NAME...', 261, Array)
#1 /home/SERVER_USER_NAME/public_html/vendor/symfony/console/Application.php(970): Symfony\\Component\\Console\\Input\\ArgvInput->getFirstArgument()
#2 /home/SERVER_USER_NAME/public_html/vendor/laravel/framework/src/Illuminate/Console/Application.php(81): Symfony\\Component\\Console\\Application->getCommandName(Object(Symfony\\Component\\Console\\Input\\ArgvInput))
#3 /home/SERVER_USER_NAME/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(133): Illuminate\\Console\\Application->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#4 /home/SERVER_USER_NAME/public_html/artisan(36): Illuminate\\Foundation\\Console\\Kernel->handle(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#5 {main}
"}

注意:当我从终端使用它们时,Commands调度的 in运行正常,因此命令没有问题。Kernal.phpartisan

4

5 回答 5

3

尝试将 cron 命令设置为这样

/usr/local/bin/php register_argc_argv=1 artisan schedule:run >> /dev/null 2>&1
于 2019-09-09T07:33:50.453 回答
2

尝试使用 -d 标志将 register_argc_argv (ini config var) 设置为 1

php -d register_argc_argv=1 artisan schedule:run >> /dev/null 2>&1
于 2020-01-17T00:20:01.890 回答
0
* * * * * cd /path-to-your-project && php -d register_argc_argv=1 artisan schedule:run >> /dev/null 2>&1

还要在 /path-to-your-project 中创建 php.ini 文件

register_argc_argv = On
于 2020-02-01T08:19:37.617 回答
0

命令行对我有用,希望对您有所帮助。

/usr/local/bin/php ~/public_html/artisan reminder:users >> /dev/null 2>&1
于 2021-01-12T04:46:55.550 回答
0

在项目根目录中创建一个 php.ini 文件

例如:/public_html/myproject

添加register_argc_argv = Onphp.ini已经创建的文件

就这样

于 2020-10-11T12:25:52.353 回答