cPanel配置Laravel每日16点Cron定时任务不生效问题求助
Cron任务不触发排查解决方案
核心配置错误修正
Laravel 任务调度的运行机制要求必须配置全局每分钟执行的Cron入口,由Laravel内部判断哪些任务达到触发条件,不能直接将cPanel的Cron规则设置为和Kernel内的任务时间一致,这是你遇到问题的最核心原因。
正确的cPanel Cron配置如下:
* * * * * <服务器PHP绝对路径> /home3/urbanhq6/public_html/new/artisan schedule:run >> /dev/null 2>&1
- 可在cPanel终端执行
which php获取服务器PHP的绝对路径,替换上方<服务器PHP绝对路径>占位符 - 你之前设置
everyMinute()时任务正常运行,大概率是当时cPanel的Cron配置为每分钟执行,修改任务规则后误调整了cPanel的Cron时间
时区一致性排查
如果调整Cron配置后仍无法按预期触发,需检查两处时区配置是否匹配:
- Laravel项目时区:打开
/home3/urbanhq6/public_html/new/config/app.php,确认timezone参数设置为你预期的时区(例:国内场景设置为Asia/Shanghai),如果为默认的UTC,对应16点会比北京时间晚8小时,自然不会在你预期的时间触发 - cPanel服务器时区:临时添加一条测试Cron任务
* * * * * date >> /home3/urbanhq6/public_html/new/time_test.log,1分钟后查看日志输出的时间是否和你本地时间一致,不一致可调整cPanel系统时区,或调整dailyAt()的参数匹配服务器时区
任务日志排查
给调度任务添加日志输出,可快速定位问题,修改Kernel.php代码如下:
protected function schedule(Schedule $schedule) { $schedule->command('reminder:email') ->dailyAt('16:00') ->appendOutputTo(storage_path('logs/reminder_email.log')); }
- 到预期触发时间后,查看
/home3/urbanhq6/public_html/new/storage/logs/reminder_email.log - 有内容说明任务已触发,问题出在邮件发送等业务逻辑中
- 无内容说明任务未触发,回到前两个步骤重新核对配置
内容的提问来源于stack exchange,提问作者zubair M
相关产品推荐
相关产品推荐

