首页 > 解决方案 > 流明调度程序无法使用 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] staging.ERROR: ErrorException: Undefined index: argv in /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, Array)

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

2 {main} {"exception":"[object] (ErrorException(code: 0): Undefined index: 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 {主要}“}

所以在最后尝试了这一切之后,现在我的 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 中那样工作。任何帮助都将被重新评分,我将非常感谢您的帮助

标签: phplaravelcronlumen

解决方案


argv当您不执行 cli 版本的 php.ini 时,您将收到这些错误。您应该(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 的问题。


推荐阅读