$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;
Приведенный выше код дает ошибку ниже.
Unknown SSL protocol error in connection to api.site.com:443
Согласно предложению многих людей, приведенный ниже код решит вышеуказанную проблему, но это не помогает. По-прежнему возникает такая же ошибка.
curl_setopt ($ch, CURLOPT_SSLVERSION, 3);
Я пробовал ниже также в соответствии с предложениями, но все еще получаю ту же ошибку.
curl_setopt ($ch, CURLOPT_SSLVERSION, 'CURL_SSLVERSION_SSLv3' );
Пожалуйста, предложите, что еще я должен вставить в код, чтобы исправить эту ошибку.
Спасибо,
@DarshanJain, libcurl / 7.21.0 OpenSSL / 0.9.8q zlib / 1.2.3 - это упоминается в php info.






Вы просто проигнорировали проверку сертификата SSL, возможно, это поможет вам решить проблему, используйте приведенный ниже код при запросе с помощью CURL.
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
Ty для вашего ответа, но по-прежнему появляется такая же ошибка даже после использования вышеупомянутого кода.
Вы можете попробовать этот код.
$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
Вы можете проверить, какую версию TLS использует веб-сайт в подробном режиме curl:
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, которую использует веб-сайт.
Изменение версии SSL и VERIFY_PEER / HOST в параметрах curl не решило мою проблему, но этот подход помог.
какую версию curl вы используете?