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

无法读取PHP cURL结果:var_dump可用但无法赋值给变量

解决方案:特定服务器cURL无法获取JSON数据的排查步骤

1. 先排查cURL请求错误信息

首先必须添加cURL错误检测,这是定位问题的核心:

修改接收端代码,加入错误检查和请求信息打印:

<?php    
$ch = curl_init();
$curlConfig = array(
    CURLOPT_URL            => 'http://binance99.unaux.com/index.php',
    CURLOPT_RETURNTRANSFER => true
);
curl_setopt_array($ch, $curlConfig);
$r = curl_exec($ch);

// 打印cURL错误
if(curl_errno($ch)){
    die('CURL错误:' . curl_error($ch));
}

// 打印请求状态信息,重点看HTTP状态码
$info = curl_getinfo($ch);
var_dump($info['http_code']);
curl_close($ch);

// 打印原始返回内容,确认是否为跳转页面
var_dump($r);
?>

如果HTTP状态码是301/302,说明远程服务器返回了重定向,此时需要让cURL跟随重定向。

2. 处理重定向问题

在curlConfig中添加跟随重定向的参数:

CURLOPT_FOLLOWLOCATION => true,
CURLOPT_MAXREDIRS => 5, // 限制最大重定向次数,防止死循环

3. 模拟浏览器请求头(绕过UA检测)

很多服务器会拒绝cURL默认的User-Agent,添加浏览器UA并明确请求JSON格式:

CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36',
CURLOPT_HTTPHEADER => array(
    'Accept: application/json',
    'Accept-Language: zh-CN,zh;q=0.9',
),

4. 处理SSL/HTTPS问题(如果使用HTTPS)

如果改用HTTPS后仍有问题,可临时关闭SSL验证(生产环境建议配置正确的CA证书):

CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => false,

5. 优化内容编码处理

部分服务器会返回压缩内容,添加编码支持确保正常解析:

CURLOPT_ENCODING => 'gzip, deflate',

完整示例代码

整合上述参数后的接收端代码:

<?php    
$ch = curl_init();
$curlConfig = array(
    CURLOPT_URL            => 'http://binance99.unaux.com/index.php',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_MAXREDIRS => 5,
    CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36',
    CURLOPT_HTTPHEADER => array(
        'Accept: application/json',
        'Accept-Language: zh-CN,zh;q=0.9',
    ),
    CURLOPT_ENCODING => 'gzip, deflate',
    // 若使用HTTPS,取消以下两行注释
    // CURLOPT_SSL_VERIFYPEER => false,
    // CURLOPT_SSL_VERIFYHOST => false,
);
curl_setopt_array($ch, $curlConfig);
$r = curl_exec($ch);

if(curl_errno($ch)){
    die('CURL错误:' . curl_error($ch));
}

$info = curl_getinfo($ch);
curl_close($ch);

if($info['http_code'] === 200){
    $data = json_decode($r, true);
    print_r($data);
} else {
    echo '请求失败,状态码:' . $info['http_code'];
    var_dump($r); // 打印错误页面内容排查问题
}
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 08:25:21