Я пытаюсь найти проблему с вызовом 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 () для получения информации о вашей конкретной передаче.
Вы пытались установить CURLOPT_MAXREDIRS? Я обнаружил, что иногда для некоторых веб-сайтов, которые обычный пользователь браузера не видит, будет существовать «бесконечный» цикл переадресации.
Если это вообще возможно, попробуйте sudo
ing, поскольку пользователь PHP работает под (возможно, один Apache работает под).
Проблема с curl
может иметь различные причины, требующие ввода пользователя, например, ненадежный сертификат, который хранится в кэше доверенных сертификатов корневого пользователя, но не в PHP. В этом случае команда будет ожидать ввода, который никогда не произойдет.
Обновление: Это применимо только в том случае, если вы запускаете curl externally с помощью exec
– возможно, он не применяется.