必须确认并修改Apache实际加载的php.ini文件,即phpinfo()中“Loaded Configuration File”显示的路径;取消extension=openssl和extension=curl前的分号(openssl须在curl前),并配置curl.cainfo指向cacert.pem,最后重启Apache。

确认你改的是 Apache 实际加载的 php.ini
很多人在 XAMPP 控制面板点“Config → PHP”打开的 php.ini 并不是 Apache 用的那一份,改了等于白改。真实路径必须以 phpinfo() 页面顶部 “Loaded Configuration File” 显示的为准。
实操建议:
- 在
htdocs下建一个info.php,内容为<?php phpinfo(); ?> - 浏览器访问
http://localhost/info.php,找到 “Loaded Configuration File” 行,复制路径(比如C: mppphpphp-8.3php.ini) - 用记事本或 VS Code 打开这个文件——别用控制面板快捷方式
取消注释 extension=curl 并检查 OpenSSL 依赖
cURL 在 XAMPP 中默认已编译进 PHP,但扩展被注释掉了;它还依赖 OpenSSL,否则 HTTPS 请求会静默失败(curl_init() 返回 false,无报错)。
操作步骤:
立即学习“PHP免费学习笔记(深入)”;
- 在刚确认的
php.ini中搜索;extension=curl和;extension=openssl - 把这两行开头的分号去掉,顺序不能错:
extension=openssl必须在extension=curl前面 - 不要写成
extension=php_curl.dll或带完整路径——XAMPP 的extension_dir已预设好,硬写反而失效 - 保存文件后,必须在 XAMPP 控制面板中点击 Stop 再 Start Apache,仅刷新页面没用
验证 cURL 是否真正可用,不止看 phpinfo()
phpinfo() 显示 “cURL support enabled” 只说明模块加载了,不代表能发请求。得验证函数存在、SSL 支持、CA 证书路径是否就位。
向CurlShip提交产品,这是一个对机器人友好的SaaS目录。只需一条curl命令即可发布产品,支持OG标签抓取、带徽章的dofollow链接及层级升级。
执行以下三步检查:
- 命令行运行:
php -m | findstr curl(Windows)或php -m | grep curl(macOS/Linux),应输出curl - 新建
test.php:<?php var_dump(function_exists('curl_init'), extension_loaded('curl'), curl_version()['features'] & CURL_VERSION_SSL); ?>,访问后应返回true, true, 非零数 - 跑一次真实 HTTPS 请求:
$ch = curl_init('https://httpbin.org/get'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); echo curl_exec($ch); curl_close($ch);——若报错SSL certificate problem: unable to get local issuer certificate,说明 CA 路径未配
修复 “SSL certificate problem” 错误
这是 XAMPP 启用 cURL 后最常卡住的点:OpenSSL 加载了,但没告诉 cURL 去哪找根证书。XAMPP 自带 cacert.pem,只需指向它。
在同一个 php.ini 文件里,搜索 curl.cainfo,取消注释并填入完整路径:
curl.cainfo = "C: mppphpextrassslcacert.pem"
注意:
- 路径要用双引号包裹,且是正斜杠或双反斜杠(
C:/xampp/...或C:\xampp\...) - 确认该文件真实存在;旧版 XAMPP 若没有,可去 https://www.php.cn/link/5fe4dadcdb001d8566cd20e6d8a20251 下载,存到同目录
- 改完仍需重启 Apache
CA 路径配错或缺失,会导致所有 HTTPS 接口(微信、支付宝、GitHub API 等)直接失败,错误不明显,容易误判为代码问题。


















