確認
①/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が実行できていないということでした。
crontabのPATHに以下の文言を追加することで解消。
:/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
」を適当なファイル出力に変更して原因を探るといいです。
[…] KUSANAGIのLAMPに構築したLaravelアプリのcronバッチが実行されない […]