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

Laravel cron job无法自动运行 手动执行php artisan schedule:run正常如何解决

Laravel 计划任务自动触发配置方案

Laravel 框架的计划任务仅负责定义调度规则,本身不会自动运行,你需要在系统中配置一个每分钟触发的定时任务,调用php artisan schedule:run命令,框架会自动判断哪些定义好的任务需要执行。

Linux / macOS 环境配置

  1. 首先确认PHP和项目的绝对路径
    • 执行which php获取PHP的绝对路径,示例返回为/usr/local/bin/php
    • 记好你的Laravel项目根目录的绝对路径,示例为/var/www/laravel-project
  2. 编辑Cron任务列表
    如果你用web运行用户(比如www-data)部署项目,建议用对应用户编辑Cron,避免权限问题:
    sudo -u www-data crontab -e
    
    如果你是本地开发直接用当前用户编辑即可:
    crontab -e
    
  3. 在打开的Cron编辑页最后添加一行规则,把路径替换成你自己的实际路径:
    * * * * * cd /var/www/laravel-project && /usr/local/bin/php artisan schedule:run >> /dev/null 2>&1
    
    规则说明:
    • 开头的* * * * *代表每分钟执行一次
    • >> /dev/null 2>&1代表丢弃命令运行的输出内容,不需要保留调度器本身的运行日志的话可以保留该配置
  4. 保存退出即可,Cron会自动加载新的规则。

Windows 环境配置

  1. 打开系统自带的「任务计划程序」,点击右侧「创建基本任务」
  2. 按引导填写:
    • 名称自定义,比如Laravel 计划任务调度器,描述可以留空,点击下一步
    • 触发器选择「每天」,点击下一步,时间随便选,再下一步
    • 操作选择「启动程序」,点击下一步
    • 「程序或脚本」填你刚才查到的PHP绝对路径,比如C:\php-8.1\php.exe
    • 「添加参数」填artisan schedule:run
    • 「起始于」填你的Laravel项目根目录绝对路径,比如C:\www\laravel-project
  3. 完成创建后,找到刚创建的任务,右键打开属性:
    • 切换到「触发器」 tab,选中已有的触发器点击「编辑」
    • 勾选「重复任务间隔」,设置为1分钟,持续时间选择24小时,保存即可。

配置验证与常见问题排查

  • 配置完成后先手动执行一遍完整的调度命令,确认没有报错:
    Linux/macOS 执行 cd 你的项目路径 && 你的PHP绝对路径 artisan schedule:run
    Windows cmd执行 cd 你的项目路径 && 你的PHP绝对路径 artisan schedule:run
  • 确认项目的storage目录权限正常,Cron运行的用户对该目录有读写权限
  • 确认Laravel配置文件config/app.php里的timezone参数和系统时区一致,避免调度时间和预期不符
  • 你自己定义的调度任务中如果涉及文件读写操作,尽量使用绝对路径,避免相对路径找不到资源的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:33:02