Недопустимый аргумент для foreach() в Laravel Scheduled Job

Я работаю с Schedular в Laravel 5.8. после настройки Commands и Command Kernal я получаю сообщение об ошибке,

Для foreach() указан неверный аргумент в /home/SERVER_USER_NAME/public_html/vendor/symfony/console/Input/ArgvInput.php:261)

Вот методы 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 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, запланированный в Kernal.php, работает правильно, когда я использую их с artisan из терминала, поэтому проблем с командой нет.


person Kiran Maniya    schedule 09.09.2019    source источник


Ответы (5)


Попробуйте установить команду cron следующим образом

/usr/local/bin/php register_argc_argv=1 artisan schedule:run >> /dev/null 2>&1
person N69S    schedule 09.09.2019
comment
Он уже добавлен как cron (согласно данным в Документах). В другом проекте та же процедура работает хорошо. - person Kiran Maniya; 09.09.2019

Попробуйте установить register_argc_argv (переменная конфигурации ini) как 1, используя флаг -d

php -d register_argc_argv=1 artisan schedule:run >> /dev/null 2>&1
person Ameer Hamza    schedule 17.01.2020

* * * * * cd /path-to-your-project && php -d register_argc_argv=1 artisan schedule:run >> /dev/null 2>&1

Также создайте файл php.ini в вашем /path-to-your-project с помощью

register_argc_argv = On
person Maulik Bhatt    schedule 01.02.2020
comment
Он работает с версией php cli без использования флага register_argc_argv в php.ini. - person Kiran Maniya; 01.02.2020

Создайте файл php.ini в корне вашего проекта.

например: /public_html/мой проект

Добавьте register_argc_argv = On в уже созданный файл php.ini.

Это все

person Akeel ahamed    schedule 11.10.2020

Эта командная строка сработала для меня, надеюсь, она поможет.

/usr/local/bin/php ~/public_html/artisan reminder:users >> /dev/null 2>&1
person Santiago Vasquez    schedule 12.01.2021