Intereting Posts
Создание текстового файла для загрузки на лету Как пройти время в «highcharts»? Запрос jQuery AJAX завершается ошибкой 503 только с параметром «http://example.com» в качестве значения Файлы cookie недоступны Как я могу дать указание ремесленнику сохранить модель в конкретном каталоге? Композитор, игнорирующий файл компоновщика zip dependecies 'composer.json Ошибка SSL: неверный или самозаверяющий сертификат – загрузка изображения Magento в продуктах Интерфейс с запущенными приложениями в PHP? PHP get dropdownlist выбирает значение опции Как автоматизировать форматирование PHP-источника? Проблема с конфигурацией с контактной формой PHP Что я должен использовать для аутентификации пользователей в PHP? извлекать записи с помощью ajax и отображать их в php выводить или записывать в xml-файл? время работы ресторана с таблицей базы данных в формате для чтения человеком с использованием php

Странный таймаут с PHP cURL и SSL

Я испытываю странные таймауты, используя cURL с PHP при попытке доступа к Amazon Cloudfront. Это, похоже, влияет на все запросы недействительности, создавая дистрибутивы и т. Д. CURL либо отчеты, получающие 0 байтов, либо очень мало байтов, а затем тайм-аут: Operation timed out after 120000 milliseconds with 88 out of 619 bytes received .

Расширение настроек таймаута, похоже, не имеет особого значения.

CURLOPT_VERBOSE трассировки с использованием CURLOPT_VERBOSE производит этот вывод:

 * About to connect() to cloudfront.amazonaws.com port 443 (#0) * Trying 72.21.215.67... * connected * Connected to cloudfront.amazonaws.com (72.21.215.67) port 443 (#0) * skipping SSL peer certificate verification * SSL connection using SSL_RSA_WITH_RC4_128_MD5 * Server certificate: * subject: CN=cloudfront.amazonaws.com,O=Amazon.com Inc.,L=Seattle,ST=Washington,C=US * start date: Jul 30 00:00:00 2010 GMT * expire date: Jul 29 23:59:59 2013 GMT * common name: cloudfront.amazonaws.com * issuer: CN=VeriSign Class 3 Secure Server CA - G2,OU=Terms of use at https://www.verisign.com/rpa (c)09,OU=VeriSign Trust Network,O="VeriSign, Inc.",C=US > POST /2010-11-01/distribution/E1CIM4A92QFD98/invalidation HTTP/1.1 User-Agent: S3/php Accept: */* Host: cloudfront.amazonaws.com Date: Wed, 07 Mar 2012 14:31:58 GMT Content-Type: application/xml Authorization: AWS ************************ Content-Length: 200 < HTTP/1.1 201 Created < x-amzn-RequestId: 4c2d0d3f-6862-11e1-ac27-5531ac8c967f < Location: https://cloudfront.amazonaws.com/2010-11-01/distribution/E1CIM4A92QFD98/invalidation/I35KLNROKA40FU * Operation timed out after 120000 milliseconds with 0 bytes received * Closing connection #0 

Это похоже на этот вопрос . Однако, похоже, что в моем случае завиток действительно получает ответ, но почему-то игнорирует его и тайм-аут? Из того, что я вижу, получен ответ ( 201 Created …), и нет ошибок SSL. Так почему же завиток тайм-аут?

Информация о версии cURL

 [version_number] => 463623 [age] => 3 [features] => 1597 [ssl_version_number] => 0 [version] => 7.19.7 [host] => x86_64-unknown-linux-gnu [ssl_version] => NSS/3.12.7.0 [libz_version] => 1.2.3 [protocols] => Array ( [0] => tftp [1] => ftp [2] => telnet [3] => dict [4] => ldap [5] => ldaps [6] => http [7] => file [8] => https [9] => ftps [10] => scp [11] => sftp ) 

Все еще не совсем уверен, почему эта версия curl ведет себя таким образом (это похоже на ошибку), но решение заключалось в том, чтобы скомпилировать другую версию curl и php (более или менее следуя этим инструкциям )

Это поможет понять, как вы настраиваете сеанс завивки. Вы делаете такие вещи, как:

 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "/CAcerts/BuiltinObjectToken-EquifaxSecureCA.crt"); 

Быстрый тест, чтобы проверить, есть ли у вас проблема проверки SSL:

 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);