在Apache2上运行的Laravel 5.7版,PHP 7.2版
我的crontab中的命令如下:
* * * * * php /var/www/dev-site/artisan schedule:run >> /dev/null 2>&1
我的内核如下:
<?php
namespace App\Console;
use App\Console\Commands\ImportInvoiceBatch;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
protected $commands = [
ImportInvoiceBatch::class,
];
protected function schedule(Schedule $schedule)
{
$schedule->command('import:invoice-batch')->everyMinute()->withoutOverlapping();
}
protected function commands()
{
$this->load(__DIR__.'/Commands');
require base_path('routes/console.php');
}
}
将我定义的命令运行为“ php artisan import:invoice-batch”可以正常运行,甚至运行“ php artisan schedule:run”可以识别所有内容并按预期运行任务,但是调度器并没有按时执行正在发生。我有什么想念的吗?预先感谢。
答案 0 :(得分:0)
在运行artisan之前尝试将工作目录更改为应用程序根目录:
* * * * * cd /var/www/dev-site/artisan && php artisan schedule:run >> /dev/null 2>&1
您也可以尝试添加调试输出路径:
* * * * * cd /var/www/dev-site/artisan && php artisan schedule:run >> /var/log/crontab/artisan.log 2>&1