Ошибка - PHP - cURL - Неизвестная ошибка протокола SSL при соединении -

$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' );

Пожалуйста, предложите, что еще я должен вставить в код, чтобы исправить эту ошибку.

Спасибо,

какую версию curl вы используете?

Darshan Jain 23.03.2018 09:23

@DarshanJain, libcurl / 7.21.0 OpenSSL / 0.9.8q zlib / 1.2.3 - это упоминается в php info.

Gkra 23.03.2018 09:32
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
3 012
3

Ответы 3

Вы просто проигнорировали проверку сертификата SSL, возможно, это поможет вам решить проблему, используйте приведенный ниже код при запросе с помощью CURL.

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

Ty для вашего ответа, но по-прежнему появляется такая же ошибка даже после использования вышеупомянутого кода.

Gkra 23.03.2018 09:29

Вы можете попробовать этот код.

$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 не решило мою проблему, но этот подход помог.

Другие вопросы по теме