在执行CURL的时候,出现返回false的情况,这个时候,需要检查错误和原因:
打印错误:curl_error
打印错误码:curl_errno
出现77这种错误码,有一种可能就是系统的ca包没有更新
包名为
ca-certificates
更新一下这个包一般通过yum安装或者更新软件就没问题了
我今天遇到的问题是更新了该包以后,curl扩展还是提示这个问题 需要重启一下php 重新加载一下扩展才能解决问题
来自:http://blog.csdn.net/sdcxyz/article/details/46545677
出现问题:
1.如果是对于php-fpm这样的,可能需要重启一下,因为之前没有这个扩展进来,而你用ssl访问时就会出现这个问题。
2.有可能当时你加了ssl,但是后来呢,对方ssl证书更新了导致其证书过期了,这种情况果断重启动php:service php-fpm restart,我遇到的就是这个问题,重启后果断解决。
要不要双向认证:
http://www.cnblogs.com/freespider/p/3622830.html
PHP端解决办法:
if ($ssl) { $options[CURLOPT_SSL_VERIFYHOST] = 1;//检测下服务器的域名与证书上的是否一致 $options[CURLOPT_SSL_VERIFYPEER] = FALSE;//不判断服务器证书是否和正规浏览器认证过的授权(也就是说这块自己也能玩一个ssl,不提示错误) }
CURLOPT_SSL_VERIFYPEER:是否检测服务器的证书是否由正规浏览器认证过的授权CA颁发的
CURLOPT_SSL_VERIFYHOST:是否检测服务器的域名与证书上的是否一致
CURLOPT_SSL_VERIFYHOST的值
设为0表示不检查证书
设为1表示检查证书中是否有CN(common name)字段
设为2表示在1的基础上校验当前的域名是否与CN匹配
而libcurl早期版本中这个变量是boolean值,为true时作用同目前设置为2,后来出于调试需求,增加了仅校验是否有CN字段的选项,因此两个值true/false就不够用了,升级为0/1/2三个值。
再后来(libcurl_7.28.1之后的版本),这个调试选项由于经常被开发者用错,被去掉了,因此目前也不支持1了,只有0/2两种取值。
转载请注明:永盟博客 » PHP的Curl出现:curl call error(77): Problem with the SSL CA cert (path? access rights?)的解决方案