【发布时间】:2018-02-19 18:47:47
【问题描述】:
事实
我在 Win 10 笔记本电脑上安装了 Apache/2.4.27 (Win64) PHP/7.2.0beta3。我想实现 cURL。这是我的代码
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://www.youtube.com');
curl_exec($curl);
if (curl_errno ( $curl )) {
echo curl_error ( $curl );
curl_close ( $curl );
}
产生错误SSL certificate problem: unable to get local issuer certificate。所以我从https://curl.haxx.se/ca/cacert.pem 下载了证书。获取 cacert.pem 文件,将其放入 PHP 文件夹并像这样编辑 php.ini 文件
curl.cainfo = C:php/ext/cacert.pem。
问题
现在我收到此错误error setting certificate verify locations: CAfile: C:php/ext/cacert.pem CApath: none。我用谷歌搜索,我发现的唯一解决方案是我必须从我想要 cURL 的站点下载 .crt 文件,并将其包含在我的 cURL 中,如 curl_setopt($curl, CURLOPT_CAINFO, "C:/wamp64/www/GIAG2.crt");。
问题 1.1:
我不知道如何下载.crt 文件,所以我可以将它包含在我的代码中,就像上面的例子一样。
问题 1.2:这不是一个“通用”的解决方案,我想设置我的证书,这样我就不必为不同的站点下载不同的证书。
谢谢
【问题讨论】:
-
我也遇到了
SSL certificate problem: unable to get local issuer certificate问题,和你一样,我得到了 cacert.pem 并在我的 php.ini 中链接到它。非常适合我。唯一的区别是我有 PHP 5.6。 -
当前错误是说它不能设置证书位置。
C:php/ext/cacert.pem应该是C:/php/ext/cacert.pem然后它至少应该找到它。之后,如果它有效,你能发布结果吗?您引用的当前 curl cacert.pem 中包含 GeoTrust Global CA 证书,因此它应该可以很好地验证 YouTube。 -
@drew010 即使与
curl.cainfo = C:/php/cacert.pem一起工作,细节是,我在C:之后省略了/。我忘记了书中最古老的规则。感谢您的回答。你可以把它作为一个普通的发布,所以我可以投票给你并选择它作为正确的。