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

PHP使用curl发起GET请求无返回,$output为false是什么原因?

错误原因

  • curl错误检测逻辑顺序错误:你将curl_errno()判断放在了curl_exec()之前,此时请求尚未执行,根本捕获不到请求过程中出现的错误,相当于错误检查完全没生效。
  • 缺少HTTPS证书校验配置:请求的是HTTPS协议接口,PHP cURL默认会校验服务端SSL证书,如果你运行环境没有配置根CA证书 bundle,请求会直接失败返回false。
  • 输出逻辑错误:json_decode()默认返回的是stdClass对象,直接用echo输出对象会抛出PHP错误,就算请求成功也看不到正常输出;另外如果$output是布尔值false,传入json_decode()会直接返回null,没有输出内容。
  • 没有判断请求执行结果就直接做后续解析,失败场景没有兜底逻辑。

修复后代码

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.chucknorris.io/jokes/random');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// 本地测试环境可临时关闭SSL证书校验,生产环境建议配置CA证书后保持开启校验
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

$output = curl_exec($ch);

// 把错误判断放到请求执行之后才能正确捕获异常
if(curl_errno($ch)){
    echo 'Curl error: ' . curl_error($ch);
    curl_close($ch);
    exit;
}

curl_close($ch);

// 第二个参数传true,将返回结果解析为关联数组方便操作
$jsonArrayResponse = json_decode($output, true);
// 接口返回的笑话内容存在value字段,直接输出该字段即可
echo $jsonArrayResponse['value'];
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 19:15:07