这不是重复的,我已经阅读了数百篇关于此的帖子和文档,尽管已经测试了几乎所有的测试用例,但仍然无法让cURL在我的本地计算机上工作。
PHP信息
版本:5.5.36
php.ini
:/etc/php.ini
SSL:是
SSL版本:SecureTransport
此处下载的证书:https://curl.haxx.se/docs/caextract.html
php.ini cURL cainfo setting
[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
curl.cainfo=/Users/me/cacert.pem
PHP脚本 (请求本身适用于Postman)
curl_setopt($curl, CURLOPT_URL, 'https://android.googleapis.com/gcm/send');
// headers include json content type ang GCM authorization key
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POST, 1);
// json is correct, works via postman with same params
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($fields));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_CAINFO, '/Users/me/cacert.pem'); // it exists
测试用例说明和错误
使用上面的参数
SSL:证书验证失败(结果:5)
将CURLOPT_SSL_VERIFYPEER
设置为false
并删除CURLOPT_CAINFO
SSL:CA证书集,但证书验证已禁用
仅删除CURLOPT_CAINFO
时,将CURLOPT_SSL_VERIFYPEER
保留为true
SSL:证书验证失败(结果:5)
我已经阅读了cURL issues on Yosemite(我在操作系统ElCapitain上)。如果我curl --cacert /Users/me/cacert.pem https://google.com
,从命令行我也得到curl: (51) SSL: certificate verification failed (result: 5)
但是,它适用于https://paypal.com