laragon中配置laravel定时任务需用windows任务计划程序替代cron,核心是每分钟调用laragon自带php.exe执行artisan schedule:run,路径、权限和环境变量必须准确匹配。

在 Laragon 中配置 Laravel 定时任务,本质是用 Windows 的 任务计划程序(Task Scheduler) 替代 Linux 的 cron,因为 Windows 本身不支持原生 cron。Laragon 不提供内置的 cron 服务,但完全可以通过系统级定时任务 + Laravel 的 schedule:run 命令实现自动调度,且稳定可靠。
确认 Laravel 调度器已正确配置
确保项目中已定义好调度逻辑:
- 编辑
app/Console/Kernel.php,在schedule()方法里添加任务,例如:$schedule->command('inspire')->hourly(); - 确认该命令能手动运行成功:
在 Laragon 终端中进入项目目录,执行php artisan inspire或php artisan schedule:run,无报错才代表基础可用 - 检查
.env中APP_ENV=local和APP_DEBUG=true(开发阶段便于排查),生产环境建议设为production
用 Windows 任务计划程序模拟 cron
这是 Laragon 下最标准、最可控的方式,无需第三方工具或改造 PHP 环境:
- 打开「Windows 任务计划程序」→ 左侧点击「创建基本任务」
- 名称填
Laravel Schedule Runner,描述可选 - 触发器选「每天」→「下一步」→ 设置起始时间为当前时间后 1 分钟(避免立即执行干扰)→「下一步」
- 操作选「启动程序」→「下一步」
- 程序或脚本填:
C:\laragon\bin\php\php-8.2.12\php.exe(路径需与 Laragon 当前启用的 PHP 版本一致,可在 Laragon 主界面右下角查看) - 添加参数填:
artisan schedule:run - 起始于填你的项目完整路径,例如:
C:\laragon\www\my-laravel-app - 勾选「不管用户是否登录都要运行」和「不存储密码」(若提示权限问题,可改选「只在用户登录时运行」并勾选「最高权限运行」)
关键细节与排错要点
很多失败源于路径、权限或环境变量缺失:
- 必须用 Laragon 自带的 php.exe 路径,不能用系统 PATH 里的 PHP —— 否则可能加载不到 Laragon 的扩展(如 pdo_mysql)或 Composer 自动加载器
- 确保
artisan文件在项目根目录且有执行权限(Windows 一般默认满足) - 如果报
Could not open input file: artisan,说明「起始于」路径错误,不是「程序」路径错误 - 如果报数据库连接失败,检查
.env中DB_HOST=127.0.0.1(别用 localhost)、DB_USERNAME=root、DB_PASSWORD=(Laragon 默认空密码) - 日志可加到任务参数末尾:
artisan schedule:run >> C:\laragon\www\my-laravel-app\storage\logs\scheduler.log 2>&1
替代方案:用 CMD 批处理 + 后台运行(轻量备用)
适合临时调试或单次部署:
- 新建文本文件,保存为
run-schedule.bat,内容如下:@echo off<br>C:<br>cd \laragon\www\my-laravel-app<br>"C:\laragon\bin\php\php-8.2.12\php.exe" artisan schedule:run<br>timeout /t 60 >nul<br>goto :start
- 双击运行后它会每分钟执行一次(仅当前 CMD 窗口存活期间有效)
- 如需开机自启,可将此 bat 文件放入「启动」文件夹(
shell:startup),但不如任务计划程序稳定











