必须通过phpinfo()确认apache实际加载的php.ini路径,再启用extension=openssl和extension=curl(顺序不可颠倒),并配置curl.cainfo指向cacert.pem,最后完全重启apache验证。

确认你改的是 Apache 实际加载的 php.ini
很多人改完 php.ini 发现 curl_init() 还是报错,根本原因是改错了文件。XAMPP 中 Apache 和命令行(php -v)可能用不同的配置文件,而网页请求只认 Apache 加载的那一份。
实操建议:
- 在
C:\xampp\htdocs\下新建info.php,内容为<?php phpinfo(); ?> - 浏览器访问
http://localhost/info.php,搜索 “Loaded Configuration File” - 看到的路径才是唯一有效的
php.ini,比如C:\xampp\php\php.ini或C:\xampp\php\php-8.3\php.ini - 不要依赖 XAMPP 控制面板里 “Config → PHP” 打开的那个文件,它常是模板或副本
取消注释 extension=curl 和 extension=openssl
cURL 在 XAMPP 中默认已编译好,不需要下载 DLL 或复制文件。但 OpenSSL 必须先启用,否则 HTTPS 请求会失败(cURL error 60)。
打开上一步确认的 php.ini,搜索以下两行:
;extension=openssl ;extension=curl
改为:
extension=openssl extension=curl
注意点:
- 不要写成
extension=php_openssl.dll或带完整路径——XAMPP 的extension_dir已预设好 -
openssl必须在curl前面,顺序错可能导致curl_init()返回false且无提示 - Windows 下扩展名是
.dll,但php.ini中不写后缀;Linux/macOS 是.so,但 XAMPP macOS 版通常不单独提供 cURL 编译包
修复 “SSL certificate problem” 错误
即使 extension=openssl 和 extension=curl 都启用了,curl_exec() 访问 HTTPS 地址仍可能报错:cURL error 60: SSL certificate problem: unable to get local issuer certificate。
这是因为 PHP 不知道去哪里找 CA 证书。XAMPP 自带了证书文件,只需配一下路径:
向CurlShip提交产品,这是一个对机器人友好的SaaS目录。只需一条curl命令即可发布产品,支持OG标签抓取、带徽章的dofollow链接及层级升级。
在同一个 php.ini 中搜索 curl.cainfo,取消注释并设为:
curl.cainfo = "C:\xampp\php\extras\ssl\cacert.pem"
(Windows 路径用双引号包裹,反斜杠无需转义;macOS/Linux 路径类似,但需确认 cacert.pem 实际位置)
常见坑:
- 路径写错或文件不存在 → 检查
C:\xampp\php\extras\ssl\下是否有cacert.pem - 路径末尾多了反斜杠,如
"C:\xampp\php\extras\ssl\"→ PHP 会解析失败 - 用单引号包裹路径 → Windows 下部分版本不识别单引号路径
重启 Apache 并验证函数是否可用
改完 php.ini 后,仅刷新页面或点击 XAMPP 的 “Restart” 按钮不够。Apache 必须完全停止再启动,才能重新加载 PHP 扩展。
验证步骤:
- 在 XAMPP Control Panel 中,对 Apache 点击 Stop,等状态变灰后再点 Start
- 创建
C:\xampp\htdocs\test.php,内容为:
<?php var_dump(function_exists('curl_init'));
var_dump(extension_loaded('curl'));
$ch = curl_init('https://httpbin.org/get');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
echo curl_exec($ch) ?: 'cURL failed';
curl_close($ch);
?>
访问 http://localhost/test.php。若输出 bool(true) 两次,且最后打印出 JSON,说明完全就绪。
容易忽略的一点:如果页面空白,不是扩展没开,而是 php.ini 有语法错误(比如多了一个等号、引号不匹配),或者杀毒软件把 php_curl.dll 隔离了——此时查看 Apache 错误日志(C:\xampp\apache\logs\error.log)比反复重试更高效。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










