Lumen Scheduler 无法使用 cron 作业
Lumen Scheduler not working using cron jobs
我正在尝试 运行 流明调度程序,我为此使用了 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
Stack trace:
0 /home/humzayun/fbapp/vendor/symfony/console/Input/ArgvInput.php(53):
Laravel\Lumen\Application->Laravel\Lumen\Concerns{closure}(8,
'Undefined index...', '/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,
'Undefined index...', '/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
我的 lumen 日志文件显示
但是通过这个 cron 命令,没有任何事情像我在 ssh 中所做的那样有效。
任何帮助都会重新评分我将非常感谢您的帮助
当您不执行 php 的 cli 版本时,您将收到这些 argv
错误。执行 php -v
:
时你应该看到 (cli)
# 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 的问题。
我正在尝试 运行 流明调度程序,我为此使用了 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 Stack trace:
0 /home/humzayun/fbapp/vendor/symfony/console/Input/ArgvInput.php(53):
Laravel\Lumen\Application->Laravel\Lumen\Concerns{closure}(8, 'Undefined index...', '/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, 'Undefined index...', '/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
我的 lumen 日志文件显示
但是通过这个 cron 命令,没有任何事情像我在 ssh 中所做的那样有效。 任何帮助都会重新评分我将非常感谢您的帮助
当您不执行 php 的 cli 版本时,您将收到这些 argv
错误。执行 php -v
:
(cli)
# 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 的问题。