[英]Error - PHP - cURL - Unknown SSL protocol error in connection -
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $xml_url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_HEADER, false);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 0);
$xml = curl_exec($ch);
if(curl_exec($ch) === false)
{ echo curl_error($ch); }
else
{ echo 'Operation completed without any errors'; }
curl_close($ch);
return $xml;
上面的代码给出了以下错误。
连接到api.site.com的未知SSL协议错误:443
根据许多人的建议,以下代码可以解决上述问题,但无济于事。 仍然出现相同的错误。
curl_setopt ($ch, CURLOPT_SSLVERSION, 3);
我也按照建议尝试了以下内容,但仍然出现相同的错误。
curl_setopt ($ch, CURLOPT_SSLVERSION, 'CURL_SSLVERSION_SSLv3' );
请提出我还应该在代码中添加哪些内容来修复此错误。
谢谢,
您只是忽略了SSL证书验证,可能是它将帮助您解决问题,请在向CURL请求时使用以下代码。
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
您可以尝试此代码。
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $xml_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt ($ch, CURLOPT_HEADER, false);
$xml = curl_exec($ch);
if($xml === false) {
echo curl_error($ch);
}else{
echo 'Operation completed without any errors';
}
curl_close($ch);
return $xml;
您也可以使用此类进行curl请求,
https://gist.github.com/sourovroy/1fba93188470bbe3eefa15cd17533b23
您可以通过curl verbose模式检查网站使用的TLS版本:
curl_setopt($curl, CURLOPT_VERBOSE, true);
输出将是这样的:
...
SSL connection using TLS1.0 / RSA_3DES_EDE_CBC_SHA1
...
然后像这样设置CURLOPT_SSL_CIPHER_LIST :
curl_setopt($curl, CURLOPT_SSL_CIPHER_LIST, "TLSv1");
其中“ TLSv1”是网站使用的TLS版本。
在curl选项中更改SSL版本和VERIFY_PEER / HOST不能解决我的问题,但是这种方法可以解决。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.