You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EC2 Ubuntu环境下Laravel Sail定时任务emails:send-weekly不执行问题

解决Laravel Sail定时任务不执行的问题

核心原因

Laravel的定时任务不会自动运行,必须每分钟调用一次php artisan schedule:run命令,触发Laravel调度器检查并执行到期任务。你当前的问题就是缺少这个Cron定时触发配置。

解决方案(两种方式二选一)

方式一:在EC2宿主机(Ubuntu)上配置Cron

  1. 登录EC2服务器,打开当前用户的Crontab编辑界面:
    crontab -e
    
  2. 在文件末尾添加以下内容(替换/path/to/your/laravel/project为你的项目实际路径,比如/home/ubuntu/my-laravel-app):
    * * * * * cd /path/to/your/laravel/project && ./vendor/bin/sail artisan schedule:run >> /dev/null 2>&1
    
  3. 保存退出(nano编辑器按Ctrl+O保存、Ctrl+X退出),Cron会自动加载新任务。
  4. 验证宿主机Cron服务状态:
    sudo systemctl status cron
    
    如果未运行,启动并设置开机自启:
    sudo systemctl start cron
    sudo systemctl enable cron
    

方式二:在Docker容器内配置Cron(无需宿主机Cron)

  1. 修改项目根目录的docker-compose.yml文件,更新app服务的command和volumes配置:
    services:
      app:
        # 保留原有build、ports等配置
        command: >
          sh -c "
            cron &&
            php-fpm
          "
        volumes:
          # 保留原有卷配置
          - ./docker/cron/laravel:/etc/cron.d/laravel
    
  2. 创建Cron配置文件目录和文件:
    mkdir -p docker/cron
    touch docker/cron/laravel
    
  3. 编辑docker/cron/laravel文件,写入以下内容:
    * * * * * root cd /var/www/html && php artisan schedule:run >> /var/log/cron.log 2>&1
    
  4. 给Cron文件设置正确权限:
    chmod 0644 docker/cron/laravel
    
  5. 重启Sail容器:
    ./vendor/bin/sail down && ./vendor/bin/sail up -d
    
  6. 查看Cron日志确认执行情况:
    ./vendor/bin/sail exec app tail -f /var/log/cron.log
    

额外检查项

  1. 确认Laravel时区配置:
    检查项目根目录.env文件,确保APP_TIMEZONE=Asia/Jakarta,与任务配置的时区一致。
  2. 验证任务执行:
    配置完成后,手动执行调度命令确认任务正常运行:
    ./vendor/bin/sail artisan schedule:run
    
    查看Laravel日志storage/logs/laravel.log,检查是否有任务执行记录。

内容的提问来源于stack exchange,提问作者Bryan Leonardo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 16:35:18