Как я могу понять, почему cURL висит и не отвечает?

Я пытаюсь найти проблему с вызовом cURL в PHP. Он отлично работает в нашей тестовой среде, но не в нашей производственной среде. Когда я пытаюсь выполнить функцию cURL, она просто зависает и никогда не реагирует. Я пробовал сделать cURL-соединение из командной строки, и то же самое происходит.

Мне интересно, если cURL регистрирует то, что происходит где-то, потому что я не могу понять, что происходит в течение времени, когда команда взбивается и перемешивается. Кто-нибудь знает, есть ли журнал, который отслеживает, что там происходит?

Я думаю, что это проблемы с подключением, но наш ИТ-парень настаивает, что я должен иметь доступ к нему без проблем. Есть идеи? Я запускаю CentOS и PHP 5.1.

Обновления: используя подробный режим, я получил ошибку 28 «Подключить ()« Тайм-аут ». Я попытался увеличить тайм-аут до 100 секунд и ограничить максимальное количество повторений до 5, без изменений. Я пробовал пинговать коробку, а также получил тайм-аут. Поэтому я собираюсь представить это обратно в ИТ и посмотреть, будут ли они смотреть на него снова. Спасибо за всю помощь, надеюсь, я вернусь через полчаса с новостями о том, что это их проблема.

Обновление 2: Оказывается, мое окно разрешало имя сервера с внешним IP-адресом. Когда ИТ дал мне внутренний IP-адрес, и я заменил его на вызов cURL, все отлично поработало. Спасибо всем за помощь.

В вашем php вы можете установить переменную CURLOPT_VERBOSE:

curl_setopt($curl, CURLOPT_VERBOSE, TRUE); 

Затем он записывается в STDERR или в файл, указанный с помощью CURLOPT_STDERR (который принимает указатель файла):

 curl_setopt($curl, CURLOPT_STDERR, $fp); 

В командной строке вы можете использовать следующие переключатели:

  • --verbose чтобы сообщить больше информации в командной строке
  • --trace <file> или --trace-ascii <file> для отслеживания файла

Вы можете использовать --trace-time для --trace-time к выводам / выводам файлов

Вы также можете использовать curl_getinfo () для получения информации о вашей конкретной передаче.

http://in.php.net/manual/en/function.curl-getinfo.php

Вы пытались установить CURLOPT_MAXREDIRS? Я обнаружил, что иногда для некоторых веб-сайтов, которые обычный пользователь браузера не видит, будет существовать «бесконечный» цикл переадресации.

Если это вообще возможно, попробуйте sudo ing, поскольку пользователь PHP работает под (возможно, один Apache работает под).

Проблема с curl может иметь различные причины, требующие ввода пользователя, например, ненадежный сертификат, который хранится в кэше доверенных сертификатов корневого пользователя, но не в PHP. В этом случае команда будет ожидать ввода, который никогда не произойдет.

Обновление: Это применимо только в том случае, если вы запускаете curl externally с помощью exec – возможно, он не применяется.