PHP CURL GET HTTPS报错SSL certificate problem: unable to get local issuer certificate
原创
©著作权归作者所有:来自51CTO博客作者小龙在山东的原创作品,请联系作者获取转载授权,否则将追究法律责任
请求HTTP
使用php curl
获取http
资源,不会报错。
如下:
<?php
// 创建curl资源
$ch = curl_init();
// 设置url
curl_setopt($ch, CURLOPT_URL, "baidu.com");
// 将Transfer作为字符串返回
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// 执行并输出
$output = curl_exec($ch);
// 查看错误
$error = curl_error($ch);
echo $error;
// 释放curl资源
curl_close($ch);
请求HTTPS
但是如果请求HTTPS
的时候,默认会报错:
SSL certificate problem: unable to get local issuer certificate
这是因为HTTPS需要证书认证,如果本地没有装,就会报这个错误,我们可以把这个认证关掉。
<?php
// 创建curl资源
$ch = curl_init();
// 设置url
curl_setopt($ch, CURLOPT_URL, "https://github.com/search?q=react");
// 将Transfer作为字符串返回
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// 关闭SSL验证
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
// 执行并输出
$output = curl_exec($ch);
// 查看错误
$error = curl_error($ch);
echo $error;
// 释放curl资源
curl_close($ch);
配置HTTS
另外的一种解决办法,就是配置上HTTPS,找到证书:
到http://curl.haxx.se/ca/cacert.pem 下载pem
文件。
在PHP配置文件(php.ini
)里配置PEM文件目录位置。
curl.cainfo = "path\to\cacert.pem"
参考:http://php.net/manual/zh/function.curl-setopt.php