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

Laravel 9部署至Ubuntu服务器后调用第三方API返回Null问题

问题排查与解决思路

可能原因及处理步骤

  • 服务器出站流量限制
    先在Ubuntu服务器上用curl直接测试API请求,排查网络层面是否能正常访问:

    curl -X POST https://***.com/wp-json/jwt-auth/v1/token -d "username=你的用户名&password=你的密码"
    

    如果curl返回空或报错,联系服务器管理员开放HTTPS出站权限(默认443端口)。

  • SSL证书验证失败
    生产服务器可能无法验证第三方API的SSL证书,导致请求静默失败。临时关闭SSL验证排查:

    $response = Http::withOptions(['verify' => false])->post('https://***.com/wp-json/jwt-auth/v1/token', $credentials)->object();
    

    若恢复正常,说明是证书问题,建议在服务器上安装官方CA证书包(如ca-certificates),不要长期关闭验证。

  • PHP依赖扩展缺失
    Laravel HTTP客户端依赖ext-curl和ext-json,检查服务器是否安装:

    php -m | grep -E "curl|json"
    

    缺失则执行安装:

    sudo apt install php-curl php-json
    

    安装完成后重启Web服务器(Nginx/Apache)。

  • 请求参数不一致
    打印生产环境中$credentials的实际值,对比本地环境的参数格式:

    dd($credentials);
    

    确保键名、数据类型完全匹配第三方API的要求。

  • API IP封禁/速率限制
    第三方API可能对生产服务器IP进行了封禁或限流,换一个IP(如使用代理)测试请求,或联系API服务商确认IP状态。

调试优化

不要直接调用object(),先捕获完整响应信息定位问题:

$response = Http::post('https://***.com/wp-json/jwt-auth/v1/token', $credentials);
dd($response->status(), $response->body(), $response->headers());

状态码、响应体、请求头能帮你快速区分是请求失败、无响应还是JSON解析错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 12:59:14