温馨提示×

laravel在centos怎定时

小樊
43
2026-10-23 09:32:43
栏目: 智能运维

在 CentOS 上让 Laravel 定时任务运行,通常是通过 Linux 的 cron + Laravel 的 schedule 来实现。下面一步一步说明:


一、Laravel 中定义定时任务

1. 编辑 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();
}

二、CentOS 配置 cron

1. 编辑 crontab

crontab -e

如果是 root 用户运行 Laravel,直接用 root
如果是 www 用户,用 crontab -u www -e


2. 添加 Laravel 调度命令(重点)

* * * * * 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 自己会判断哪些任务该执行


三、检查环境

1. 确认 php 可执行

which php

如果是:

/usr/bin/php

也可以写:

* * * * * /usr/bin/php /var/www/laravel/artisan schedule:run

2. 设置时区(很重要)

在 .env 中:

APP_TIMEZONE=Asia/Shanghai

否则时间可能不对。


四、常见问题排查

1. 权限问题

chown -R www:www storage
chmod -R 755 storage

2. 查看 cron 日志

tail -f /var/log/cron

3. 手动测试

php artisan schedule:run

五、示例:每天凌晨备份数据库

$schedule->command('backup:run')->dailyAt('02:00');

如果你愿意,可以告诉我:

  • Laravel 版本
  • PHP 版本
  • 是否用 root / www 用户
  • 具体想定时执行什么任务

我可以给你一份完全可复制的配置。

0 踩