У меня есть этот простой код cURL, который отлично работает на одной машине (PHP 5.2.17), но не работает на другом (PHP 5.6.13). В более новой версии вызов cURL вызывает исключение с
SSL-партнер не ожидал получения сообщения об установлении связи.
код выглядит следующим образом:
private function postRequest($url, $request) {
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_CAINFO, "certificate.der");
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $request);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
$r = curl_exec($curl);
if ($r == false) {
$r = curl_error($curl);
}
return $r;
}
Вы можете использовать:
curl_setopt($curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_SSLv3);
Возможные варианты:
CURL_SSLVERSION_DEFAULT
CURL_SSLVERSION_TLSv1
TLSv1.x
CURL_SSLVERSION_SSLv2
SSLv2
CURL_SSLVERSION_SSLv3
SSLv3
CURL_SSLVERSION_TLSv1_0
TLSv1.0 (Added in 7.34.0)
CURL_SSLVERSION_TLSv1_1
TLSv1.1 (Added in 7.34.0)
CURL_SSLVERSION_TLSv1_2
TLSv1.2 (Added in 7.34.0)
curl_easy_setopt
не существует в моей системе. Попытка проверки на сертификате работает также лучше, дает мне лучшее сообщение об ошибке. Спасибо!
$url
одинаково?