在 Debian 上让 Laravel 定时任务(计划任务) 正常运行,核心是用 Linux 的 crontab 来每分钟调用 Laravel 的调度器。
下面一步一步说明。
在 app/Console/Kernel.php 里:
protected function schedule(Schedule $schedule)
{
// 示例:每天凌晨执行
$schedule->command('inspire')->daily();
// 或调用闭包
$schedule->call(function () {
// 业务逻辑
})->everyMinute();
}
crontab -e
如果是给 www-data 或 项目用户 运行:
sudo crontab -u www-data -e
推荐写法(最标准):
* * * * * cd /var/www/your-project && php artisan schedule:run >> /dev/null 2>&1
✅ 说明:
* * * * *:每分钟执行cd /var/www/your-project:进入项目目录php artisan schedule:run:Laravel 自己判断该跑哪些任务* * * * * cd /var/www/your-project && /usr/bin/php artisan schedule:run >> /dev/null 2>&1
查看 PHP 路径:
which php
✅ 建议:
deploy)www-datastorage/ 可写chown -R www-data:www-data storage
chmod -R 755 storage
* * * * * cd /var/www/your-project && php artisan schedule:run >> /tmp/laravel-cron.log 2>&1
查看:
tail -f /tmp/laravel-cron.log
php artisan schedule:list
如果你还有 队列任务:
php artisan queue:work
建议用 Supervisor 管理,而不是 cron。
✅ Laravel 定时任务在 Debian 的标准做法:
* * * * * cd /path/to/laravel && php artisan schedule:run
Laravel 只用一个 cron,内部自己调度。
如果你愿意,可以告诉我:
我可以给你更精确的配置示例。