Lumen Scheduler не работает с помощью заданий cron - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь запустить планировщик люмена, и я использовал crontab для этой цели и настроил команду, подобную этой

* * * * * cd /home/humzayun/fbapp && ea-php71 artisan schedule:run >> /dev/null 2>&1

до этого я пытался использовать

* * * * * cd /home/humzayun/fbapp && php artisan schedule:run >> /dev/null 2>&1

но в лог-файле было выбрасывать ошибки

[2018-11-13 16:31:03] staging.ERROR: ErrorException: неопределенный индекс: Argv в /home/humzayun/fbapp/vendor/symfony/console/Input/ArgvInput.php:53 Трассировка стека:

0 /home/humzayun/fbapp/vendor/symfony/console/Input/ArgvInput.php(53):

Laravel \ Lumen \ APPLICATION-> Laravel \ Lumen \ Обеспокоенность {закрытие} (8, 'Неопределенный индекс ...', '/ home / humzayun / ...', 53, Array)

1 / home / humzayun / fbapp / artisan (34): Symfony \ Component \ Console \ Input \ ArgvInput -> __ construct ()

2 {main} {"исключение": "[объект] (ErrorException (код: 0): неопределенный индекс: argv at

/ дома / humzayun / fbapp / продавец / Symfony / консоль / Input / ArgvInput.php: 53) [StackTrace]

0 /home/humzayun/fbapp/vendor/symfony/console/Input/ArgvInput.php(53):

Laravel \ Lumen \ Application-> Laravel \ Lumen \ Обеспокоенность \ {закрытие} (8, 'Неопределенный индекс ...', '/ home / humzayun / ...', 53, Array)

1 / home / humzayun / fbapp / artisan (34): Symfony \ Component \ Console \ Input \ ArgvInput -> __ construct ()

2 {main} "}

Так что, наконец, попробовав все это, мой crontab ничего не делает.

мой код в Kernel.php -

<?php

namespace App\Console;

use Facebook\Facebook;
use Illuminate\Console\Scheduling\Schedule;
use Laravel\Lumen\Console\Kernel as ConsoleKernel;
use PharIo\Manifest\Email;

class Kernel extends ConsoleKernel
{
    /**
     * The Artisan commands provided by your application.
     *
     * @var array
     */
    protected $commands = [
        //
    ];

    /**
     * Define the application's command schedule.
     *
     * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
     * @return void
     */
    protected function schedule(Schedule $schedule)
    {
        $schedule->call(function (Facebook $facebook){
            \Log::info($facebook->getDefaultAccessToken());
            echo " yayy here ";
        })->everyMinute();
    }
}

Теперь проблема в том, что журнал ничего не сообщает.

но когда я запускаю эту команду, используя ssh, она выводит http://prntscr.com/lhxxjq

и мой лог-файл в люмене показывает

http://prntscr.com/lhxy4g

Но с помощью этой команды cron ничего не получается, как я делаю в ssh. Любая помощь будет пересмотрена, я буду очень благодарен вам за помощь

1 Ответ

0 голосов
/ 13 ноября 2018

Вы получите эти argv ошибки, когда не выполняете cli-версию php. Вы должны увидеть (cli) при выполнении php -v:

# php -v
PHP 7.1.20 (cli) (built: Jul 25 2018 10:06:40) ( NTS )

Если вы видите cgi или fcgi, значит, вы используете неправильный двоичный файл.


При выполнении команд в cron лучше не всегда перенаправлять вывод в / dev / null, а вместо этого собирать stderr и stdout для проверки на наличие ошибок. Как указано в комментариях, ea-php71 не было в $PATH. Использование полного пути к ea-php71 решило проблему ОП.

...