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

Laravel调度任务本地正常,服务器端无法运行求助

Laravel调度任务在CPanel服务器不运行的排查与解决

以下是针对问题的具体排查和解决方法:

1. 验证PHP CLI路径正确性

CPanel服务器的PHP命令路径可能并非/usr/local/bin/php,通过SSH登录服务器后执行which php获取准确的CLI路径,再替换CronJob中的PHP路径。

2. 确认Artisan文件路径无误

检查Cron命令中的Artisan路径/home/boschapp/domains/warranty.boschapp.ir/public_html/laravel/artisan是否与实际部署路径一致。部分项目部署后Artisan文件直接在public_html根目录下,而非laravel子文件夹,需根据实际情况调整。

3. 避免在调度中直接实例化控制器

控制器设计用于处理HTTP请求,调度任务更适合使用自定义命令类。你已注册MyCommands,可直接调度该命令:

protected function schedule(Schedule $schedule): void
{
    // 若需每日11点执行,改用dailyAt方法
    $schedule->command('my:command')->dailyAt('11:00');
}

然后在MyCommands的handle方法中调用短信发送逻辑:

public function handle()
{
    $hc = new SendSMSController();
    $hc->sendDelaySMS();
    // 或直接将sendDelaySMS的逻辑移至此处,减少依赖
}

4. 开启Cron日志排查错误

不要将Cron输出丢弃到/dev/null,改为输出到日志文件以便排查问题:

* * * * * /usr/local/bin/php /home/boschapp/domains/warranty.boschapp.ir/public_html/laravel/artisan schedule:run >> /home/boschapp/domains/warranty.boschapp.ir/storage/logs/cron.log 2>&1

之后查看cron.log文件,可获取权限不足、依赖缺失、环境变量错误等具体问题信息。

5. 调整Cron运行频率与调度时间匹配

Laravel调度器需要每分钟运行一次才能准确触发定时任务。你当前的Cron设置为每日11点运行一次,仅会在11点整检查任务,若调度任务设为everyMinute()也仅会执行一次。建议:

  • 将调度任务改为每日11点执行:->dailyAt('11:00')
  • 将Cron命令改为每分钟运行一次:
* * * * * /usr/local/bin/php /home/boschapp/domains/warranty.boschapp.ir/public_html/laravel/artisan schedule:run >> /dev/null 2>&1

6. 检查文件权限

  • 确保Artisan文件有执行权限:
chmod +x /home/boschapp/domains/warranty.boschapp.ir/public_html/laravel/artisan
  • 确保storage和bootstrap/cache目录拥有写入权限,Cron运行用户需能写入日志和缓存文件。

7. 指定Laravel运行环境

Cron运行时可能未加载正确的环境变量,可在命令中指定生产环境:

* * * * * /usr/local/bin/php /home/boschapp/domains/warranty.boschapp.ir/public_html/laravel/artisan schedule:run --env=production >> /home/boschapp/domains/warranty.boschapp.ir/storage/logs/cron.log 2>&1

内容的提问来源于stack exchange,提问作者Abdorreza joe afshany

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 14:38:18