流明调度程序无法使用cron作业工作

时间:2018-11-13 18:19:49

标签: php laravel cron lumen

我正在尝试运行流明调度程序,为此我使用了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]登台。错误: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 \ Concerns {closure}(8,   '未定义的索引...','/ home / humzayun / ...',53,数组)

     

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

     

2 {main} {“ exception”:“ [对象](ErrorException(code:0):未定义索引:argv at

     

/home/humzayun/fbapp/vendor/symfony/console/Input/ArgvInput.php:53)   [stacktrace]

     

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

     

Laravel \ Lumen \ Application-> Laravel \ Lumen \ Concerns \ {closure}(8,   '未定义的索引...','/ home / humzayun / ...',53,数组)

     

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 :(得分:0)

不执行cli版本的php时,您会收到这些argv错误。执行(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的完整路径解决了OP的问题。