在 CentOS 上让 Laravel 定时任务运行,通常是通过 Linux 的 cron + Laravel 的 schedule 来实现。下面一步一步说明:
routes/console.php 或 app/Console/Kernel.php推荐写在 app/Console/Kernel.php:
protected function schedule(Schedule $schedule)
{
$schedule->command('demo:test')->daily();
// 或
$schedule->call(function () {
// 自定义逻辑
})->everyMinute();
}
crontab -e
如果是 root 用户运行 Laravel,直接用 root
如果是 www 用户,用crontab -u www -e
* * * * * cd /path/to/laravel && php artisan schedule:run >> /dev/null 2>&1
示例:
* * * * * cd /var/www/laravel && php artisan schedule:run >> /dev/null 2>&1
✅ 只需要这一条 cron,Laravel 自己会判断哪些任务该执行
which php
如果是:
/usr/bin/php
也可以写:
* * * * * /usr/bin/php /var/www/laravel/artisan schedule:run
在 .env 中:
APP_TIMEZONE=Asia/Shanghai
否则时间可能不对。
chown -R www:www storage
chmod -R 755 storage
tail -f /var/log/cron
php artisan schedule:run
$schedule->command('backup:run')->dailyAt('02:00');
如果你愿意,可以告诉我:
我可以给你一份完全可复制的配置。