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

Windows11下将PHP从8.2.12升级到8.3.9后cURL异常问题

解决PHP 8.3.9 cURL无法获取接口JSON响应的问题

1. 补全cURL依赖库

PHP 8.3的cURL扩展依赖配套的libcurl.dll,从PHP官网下载的线程安全包中,把根目录下的libcurl.dll复制到XAMPP的apache\bin目录,替换掉旧版本文件。同时确认php\ext里的php_curl.dll是PHP 8.3.9原生带的,不要混用旧版本文件。

2. 修正php.ini配置

  • 不要用绝对路径指定扩展,改回标准配置:
    extension_dir = "ext"
    extension=curl
    
  • 检查并设置CA证书路径:从旧的php_old目录复制cacert.pem到新PHP的extras\ssl目录,然后在php.ini里配置:
    curl.cainfo = "C:\xampp\php\extras\ssl\cacert.pem"
    

3. 确保配置生效

修改完php.ini后,完全停止再重启Apache服务,不要仅刷新phpinfo页面,确保新配置和依赖库被正确加载。

4. 捕获cURL错误信息

在代码中添加错误捕获,定位具体问题:

$ch = curl_init('你的目标接口URL');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 开启详细调试信息(可选)
curl_setopt($ch, CURLOPT_VERBOSE, true);
$verbose = fopen('php://temp', 'w+');
curl_setopt($ch, CURLOPT_STDERR, $verbose);

$response = curl_exec($ch);

if(curl_errno($ch)){
    rewind($verbose);
    $verboseLog = stream_get_contents($verbose);
    echo 'cURL错误:' . curl_error($ch) . '<br>详细日志:' . $verboseLog;
}
curl_close($ch);
var_dump($response);

根据输出的错误信息,判断是证书问题、TLS版本不兼容还是网络连通性问题。

5. 调整TLS协议版本

如果目标接口仅支持旧版TLS,在代码中强制指定:

curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);

6. 改用XAMPP适配的PHP包

直接下载XAMPP官方提供的PHP 8.3更新包,而非独立的PHP官方包,这样能保证与XAMPP的Apache等组件完全兼容,避免依赖不匹配的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 11:05:10