PHP Curl证书问题,一次性解决

PHP Curl证书问题,一次性解决,php,curl,Php,Curl,这不是重复的,我已经阅读了数百篇文章和文档,尽管已经测试了几乎所有的测试用例,但我仍然无法让cURL在我的本地机器上工作 PHP信息 版本:5.5.36 php.ini:/etc/php.ini SSL:是的 SSL版本:SecureTransport 证书下载地点: php.ini cURL cainfo设置 [curl] ; A default value for the CURLOPT_CAINFO option. This is required to be an ; absolute

这不是重复的,我已经阅读了数百篇文章和文档,尽管已经测试了几乎所有的测试用例,但我仍然无法让cURL在我的本地机器上工作

PHP信息

版本:5.5.36

php.ini
/etc/php.ini

SSL:是的

SSL版本:SecureTransport

证书下载地点:

php.ini cURL cainfo设置

[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中工作)

测试用例描述和错误

使用上述参数

SSL:证书验证失败(结果:5)

CURLOPT\u SSL\u VERIFYPEER
设置为
false
并删除
CURLOPT\u CAINFO

SSL:CA证书集,但证书验证已禁用

仅删除
CURLOPT\u CAINFO
时,将
CURLOPT\u SSL\u VERIFYPEER
保持为
true

SSL:证书验证失败(结果:5)


我读过(我在奥斯卡皮坦)。如果我执行
curl--cacert/Users/me/cacert.pemhttps://google.com
,从命令行我还得到了
curl:(51)SSL:证书验证失败(结果:5)
但是,它可以使用您是否使用命令行运行php?php是否可以读取
/Users/me/cacert.pem
?我已经在命令行和apache服务器上进行了测试。使用了不同的php ini文件,但设置了两个证书路径信息。我认为php可以读取它(从我运行的脚本
is_文件('/Users/me/cacert.pem'))
返回
true
如果你试图用PHP将JSON字符串发送到Google GCM,你根本不需要使用curl。如果你喜欢,我可以发布一个没有curl的示例。我很感兴趣。但是问题不同,我很确定它与最新的MAC OS(Yosemite/El Capitain)有关,它阻碍了您在项目中使用的任何其他curl功能…这是一个真正的难题***!您能显示
curl-v--cacert/Users/me/cacert.pem的输出吗https://google.com
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