【发布时间】:2014-06-14 15:38:36
【问题描述】:
当我尝试通过 HTTPS 连接到服务器时遇到的错误:
Curl error: error setting certificate verify locations: CAfile: cacert.pem CApath: /etc/ssl/certs
我的 php.ini 文件顶部有这一行:curl.cainfo=/etc/php5/apache2/cacert.pem,cacert.pem 文件存在并且我已将权限设置为 777,只是为了确保权限不是问题。 /etc/ssl/certs 也一样。
我的 PHP 代码是
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://google.com");
$res = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Curl error: ' . curl_error($ch);
}
curl_close($ch);
【问题讨论】:
-
为什么要在 php.ini 中添加额外的行?
-
@MartinKonecny 我在某处读到 curl 需要该文件,您可以手动说出它的位置(当您需要通过 HTTPS/SLL 建立连接时),或者您可以在 ini 中添加该行.如果你不指定它,cURL 会抛出另一个错误,说它不知道 CAfile 在哪里......
-
默认情况下 curl 应该能够找到您的操作系统提供的所有注册证书颁发机构的公钥信息。你试过没有那条线吗?