YII2 使用curl请求,返回false

一. 起因:

今天用yii框架,请求java接口,始终返回false.

二. 分析历程:

使用curl_error()方法打印出Peer’s Certificate issuer is not recognized。

翻译出来的意思是ssl证书未认证通过,证书问题?不细揪,通过结果判断,就是证书的问题。

不过毕竟是第三方的接口,要解决需要联系运维,查看证书,还要重新设置证书路径,很麻烦,不好处理。

附上要设置的(未验证),供参考

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true);
curl_setopt($curl,CURLOPT_CAINFO,dirname(__FILE__).'/cacert.pem');

三. 解决办法

关掉curl对于证书的验证。不过curl类的封装是统一的,为了不影响其他的代码。

php curl关掉ssl验证: 

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);//原生

$curl->setOption(CURLOPT_SSL_VERIFYPEER=>0);//YII2

在此过程中还遇到了,对方接口不识别返回的json数据

解决办法,设置header

$curl->setHeaders(['Content-Type' => 'application/json']);

结果,再次测试,接口通了。

猜你喜欢

转载自www.cnblogs.com/xiaommvik/p/11353411.html