React/TypeScript

KUSANAGIのLAMPに構築したLaravelアプリのcronバッチが実行されない

確認

/etc/crontabに問題がないこと(プロジェクトのパスが間違っていない等)

* * * * * root cd /home/kusanagi/***(プロジェクトのパス) && php artisan schedule:run >> /dev/null 2>&1

②プロジェクトのapp/Console/Kernel.phpにはバッチ実行タイミングが正しく記述されていること

protected $commands = [
    \App\Console\Commands\BackupDatabaseBatch::class,
];

protected function schedule(Schedule $schedule)
{
    // $schedule->command('inspire')
    //          ->hourly();
    $schedule->command('bkup')->dailyAt('04:00');
}

結論

cronが実行するphpのパスが通っていなかった。つまりphp artisan schedule:runが実行できていないということでした。

crontabPATHに以下の文言を追加することで解消。

:/opt/kusanagi/php/bin

(例)

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/opt/kusanagi/php/bin

以上で設定時間通りにLaravelのバッチが実行されました。

2023/09/24 追記

以下を指定しないとschedule:run が走りませんでした。(php → php-8.1)

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/opt/kusanagi/php-8.1/bin

cronでLarvelのバッチが実行されない際は、crontabの「/dev/null 2>&1」を適当なファイル出力に変更して原因を探るといいです。

COMMENT

メールアドレスが公開されることはありません。