curl_exec не работает в SDK, но curl работает в командной строке

Мы размещаем веб-сайт на экземпляре Amazon Linux EC2. Наша версия PHP 5.3.29. Мы не обновились до версии 5.4, потому что часть нашего кода не совместима с форвардом. Наш curl в настоящее время версия 7.38.0. После обновления программного обеспечения у нас начались проблемы с командой curl_exec в нескольких наших PHP SDK. Команда curl в командной строке по-прежнему работает нормально. Два SDK, с которыми мы столкнулись, — это SDK для Facebook и Mandrill. У нас также были проблемы с Amazon S3 SDK, но я нашел решение для SO добавления

'scheme' => 'http'

к параметрам объекта S3, и он позаботился о проблеме. Этот генерировал CurlException в Guzzle.

Поиск по переполнению стека Я видел сообщения о том, что для CURLOPT_SSL_VERIFYPEER установлено значение false, но это не помогло двум другим SDK.

Оба SDK выдают CurlException 77, «ошибка установки сертификата проверки местоположения». Похоже, это указывает на то, что curl не может найти файлы сертификатов SSL, но я проверил разрешения для папки certs, и они 755 и принадлежат root: root, поэтому я считаю, что это означает, что они должны быть доступны. Я также попытался установить CURL_CAPATH в каталог, где находятся мои сертификаты, но это тоже не помогло.

Для Facebook curl_getinfo дает следующие значения:

array(22) { ["url"]=> string(45) "https://graph.facebook.com/oauth/access_token"["content_type"]=> NULL
["http_code"]=> int(0)
["header_size"]=> int(0)
["request_size"]=> int(0)
["filetime"]=> int(-1)
["ssl_verify_result"]=> int(0)
["redirect_count"]=> int(0)
["total_time"]=> float(0.00424)
["namelookup_time"]=> float(0.004197)
["connect_time"]=> float(0.019219)
["pretransfer_time"]=> float(0)
["size_upload"]=> float(0)
["size_download"]=> float(0)
["speed_download"]=> float(0)
["speed_upload"]=> float(0)
["download_content_length"]=> float(-1)
["upload_content_length"]=> float(-1)
["starttransfer_time"]=> float(0)
["redirect_time"]=> float(0)
["certinfo"]=> array(0) { }
["redirect_url"]=> string(0) "" }

и для Мандрилла:

array(22) {
["url"]=>
string(59) "https://mandrillapp.com/api/1.0/messages/template-name.json"["content_type"]=>
NULL
["http_code"]=>
int(0)
["header_size"]=>
int(0)
["request_size"]=>
int(0)
["filetime"]=>
int(-1)
["ssl_verify_result"]=>
int(0)
["redirect_count"]=>
int(0)
["total_time"]=>
float(0.004241)
["namelookup_time"]=>
float(0.004194)
["connect_time"]=>
float(0.005479)
["pretransfer_time"]=>
float(0)
["size_upload"]=>
float(0)
["size_download"]=>
float(0)
["speed_download"]=>
float(0)
["speed_upload"]=>
float(0)
["download_content_length"]=>
float(-1)
["upload_content_length"]=>
float(-1)
["starttransfer_time"]=>
float(0)
["redirect_time"]=>
float(0)
["certinfo"]=>
array(0) {
}
["redirect_url"]=>
string(0) ""}

Я заметил, что certinfo для обоих здесь ложен, что опять же указывает на проблему с сертификатом. Я не уверен, что это проблема с сертификатом, хотя. Нужно ли установить опцию CURL, чтобы curl мог найти сертификаты?

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]