环境
环境 | 版本 | 备注 |
---|---|---|
windows | 10 pro | -- |
PHP | 5.4 | -- |
问题
当你执行 PHP CURL 调用 HTTPS URL 时, 可能出现如下错误:
SSL certificate problem: unable to get local issuer certificate
Windows 下的 PHP CURL 默认配置是不信任任何根证书 "not trust any root certificate"
所以会出现以上错误提示 [Linux 有可能是根证书缺失]
Win10 下的解决方案
方案一 : 禁用 HTTPS 证书验证 (强烈不推荐)
// 以下必须同时为假
curl_opt($ch, CURL_SSL_VERIFYPEER, FALSE);
curl_opt($ch, CURL_SSL_VERIFYHOST, 0);
方案二 : 重新配置CA根证书路径
1. 下载 http:\curl.haxx.secacacert.pem 到 'C:cacacert.pem'
2. 配置 php.ini extension => php_openssl.dll 开启
curl.cainfo = 'C:cacacert.pem'
openssl.cafile='C:cacacert.pem'
3. 或者 curl_setopt 设置 CURL_CAINFO 为 'C:cacacert.pem'
参考 :
StackOverFlow | Zend | CnBlogs | digicert