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

Laravel版Ultimate Loan Manager自动短信失效问题求助

排查Ultimate Loan Manager自动短信未触发问题的具体方向与解决方案

您好,很抱歉看到您在Ultimate Loan Manager的自动短信功能上遇到了困扰!既然手动发送短信完全正常,说明短信网关的基础配置和调用逻辑是没问题的,问题大概率出在自动触发的机制或者Laravel的任务调度环节上,下面给您梳理几个可落地的排查步骤:

1. 先确认自动短信的场景开关与触发条件

  • 首先回到后台,仔细检查自动短信的配置:有些系统会给不同业务场景(比如还款提醒、付款通知)设置独立的开关,可能您只开启了全局自动短信总开关,但没单独开启「还款/付款」场景的自动发送权限。
  • 核对触发规则:比如是否设置了「仅逾期还款才发送」「金额超过X才触发」这类限制条件,您测试的还款/付款记录可能刚好不符合这些规则,导致自动短信没触发。

2. 检查Laravel任务调度(Cron Job)的配置

自动短信这类定时/事件触发的任务,通常依赖Laravel的Task Scheduler来执行,而手动发送是即时触发,这是两者的核心差异:

  • 登录cPanel后台,找到「Cron Jobs」工具,检查是否配置了正确的Laravel调度命令:
    * * * * * php /home/your-cpanel-username/public_html/your-project-folder/artisan schedule:run >> /dev/null 2>&1
    
    注意替换/home/your-cpanel-username/public_html/your-project-folder为您项目的实际根目录路径。如果Cron Job没配置、路径错误,自动任务(包括自动短信)根本不会启动,而邮件可能是同步触发的,所以不受影响。
  • 可以通过cPanel的「终端」工具,进入项目根目录,手动执行一次php artisan schedule:run,观察终端输出的信息,有没有报错或者任务执行的提示。

3. 查看Laravel日志定位具体错误

Laravel的错误日志默认存在storage/logs/laravel.log文件里,您可以通过cPanel的「文件管理器」找到这个文件:

  • 搜索sms、send、repayment、payment这类关键词,看看有没有相关的错误记录:
    • 比如自动发送时短信网关API调用失败(手动发送时会即时给您反馈,但自动任务的错误可能被吞进日志);
    • 或者自动触发时没正确获取到借款人的手机号、短信模板内容;
    • 也可能是storage目录没有写入权限,导致日志无法记录,但任务实际执行失败了。

4. 对比手动发送与自动发送的代码逻辑差异

既然手动发送正常,我们可以从代码层面找差异:

  • 首先找到自动短信的处理代码:通常在app/Console/Commands(定时任务)、app/Jobs(队列任务)或者app/Listeners(事件监听器)目录下。
  • 对比手动发送的代码,检查:
    • 自动发送时是否正确传递了借款人的手机号、短信内容等必要参数;
    • 如果自动短信用了Laravel队列(Queue),需要检查队列是否正常运行:
      • 查看.env文件里的QUEUE_CONNECTION配置,如果是database或redis,需要确保队列Worker在运行,也可以手动执行php artisan queue:work,看看有没有积压的短信任务;
      • 如果队列配置的是sync,那应该是即时执行,就回到日志排查具体错误。

5. 验证环境变量与后台配置的一致性

  • 检查项目根目录的.env文件里的短信网关配置(比如API密钥、网关地址),和后台手动发送时的配置是否完全一致——有些系统会把手动发送的配置存在数据库,而自动任务读取的是环境变量,两者可能出现不一致的情况。
  • 确认.env里的APP_ENV是production(生产环境),部分系统会在非生产环境(比如local、staging)自动禁用自动任务。

6. 手动触发事件来测试

  • 可以通过Laravel的tinker工具手动触发还款/付款的事件,快速定位问题:
    1. 打开cPanel终端,进入项目根目录,执行php artisan tinker;
    2. 执行如下代码(替换为您实际的付款/还款记录ID):
      $payment = App\Models\Payment::find(1); // 替换为您测试的付款记录ID
      event(new App\Events\PaymentCreated($payment));
      
    3. 观察是否有短信发送,或者查看日志里的反应,这样能快速判断是事件没触发,还是触发后短信发送环节出了问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:18:42