在 Debian 下为 Laravel 设置定时任务(Cron),通常分为 两步:
1️⃣ 配置 Linux 的 cron
2️⃣ 在 Laravel 中定义调度任务
下面一步一步说明。
路径:
vi app/Console/Kernel.php
在 schedule() 方法中添加任务,例如:
protected function schedule(Schedule $schedule)
{
// 每分钟执行一次
$schedule->command('inspire')->everyMinute();
// 每天凌晨执行
$schedule->command('backup:run')->daily();
// 调用闭包
$schedule->call(function () {
// 自定义逻辑
})->hourly();
}
✅ 你只需要在这里定义“做什么”,不需要写 cron 时间规则到系统里。
推荐使用 项目所属用户(如 www-data 或部署用户):
crontab -e
如果是 www-data:
sudo crontab -u www-data -e
* * * * * cd /var/www/laravel && php artisan schedule:run >> /dev/null 2>&1
说明:
* * * * *:每分钟触发一次(Laravel 自己判断该执行哪个任务)cd /var/www/laravel:你的 Laravel 根目录php artisan schedule:run:执行 Laravel 调度器✅ 只需这一条 cron,不要再为每个任务写 cron
which php
php -v
如果不是默认 php,可写绝对路径:
* * * * * cd /var/www/laravel && /usr/bin/php artisan schedule:run >> /dev/null 2>&1
php artisan schedule:run
tail -f storage/logs/laravel.log
确保:
storage 可写在 .env 中设置:
APP_TIMEZONE=Asia/Shanghai
并在 config/app.php 中确认。
* * * * * cd /var/www/laravel && php artisan schedule:run >> storage/logs/cron.log 2>&1
如果你愿意,可以告诉我:
www-data / 部署用户我可以给你一份完全贴合你服务器的配置。