Ошибка скручивания 52 Пустой ответ с сервера - PullRequest
62 голосов
/ 17 декабря 2009

У меня есть настройка задания cron на одном сервере для запуска скрипта резервного копирования на PHP, который размещен на другом сервере. Команда, которую я использовал, имеет следующий формат:

curl -sS http://www.example.com/backup.php

В последнее время я получаю эту ошибку, когда Cron запускается

curl: (52) Empty reply from server

Понятия не имею, что это значит. Если перейти по ссылке прямо в браузере, сценарий будет работать нормально, и я получу свой небольшой резервный zip-файл.

Может ли кто-нибудь предоставить информацию об этом?

Ответы [ 13 ]

45 голосов
/ 16 марта 2017

Это может произойти, если curl попросят выполнить простой HTTP на сервере, который выполняет HTTPS.

Пример:

$ curl http://google.com:443
curl: (52) Empty reply from server
39 голосов
/ 19 апреля 2010

Curl выдает эту ошибку при отсутствии ответа от сервера, так как HTTP ошибочно не отвечает на запрос.

Я подозреваю, что у вас проблема в том, что между вами и рассматриваемым хостом есть какая-то часть сетевой инфраструктуры, например брандмауэр или прокси. Поэтому, чтобы заставить это работать, вам потребуется обсудить проблему с людьми, ответственными за это оборудование.

5 голосов
/ 26 апреля 2017

Это может произойти, если сервер не отвечает из-за 100% использования ЦП или памяти.

Я получил эту ошибку, когда пытался получить доступ к sonarqube API, и сервер не отвечал из-за полного использования памяти

4 голосов
/ 29 января 2018

Другой распространенной причиной пустого ответа является тайм-аут. Проверьте все переходы, с которых выполняется задание cron, на ваш PHP / целевой сервер. Возможно, где-то вдоль линии находится устройство / сервер / nginx / LB / proxy, которое завершает запрос раньше, чем вы ожидали, что приводит к пустому ответу.

4 голосов
/ 02 мая 2013

В моем случае это было перенаправление на сервер; curl -L решил мою проблему.

3 голосов
/ 08 марта 2019

В случае SSL-соединений это может быть вызвано проблемой в более старых версиях сервера nginx, которая вызывает сбой во время запросов curl и Safari. Эта ошибка была исправлена ​​в версии 1.10 nginx, но в Интернете все еще есть много старых версий nginx.

Для администраторов nginx: добавление ssl_session_cache shared:SSL:1m; к http блоку должно решить проблему.

Я знаю, что OP запрашивал случай не-SSL, но, поскольку это верхняя страница в goole для проблемы «пустой ответ от сервера», я оставляю здесь ответ SSL, поскольку я был одним из многие, кто бился головой об стену с этим вопросом.

3 голосов
/ 15 ноября 2011

В моем случае это было вызвано проблемой PHP APC. Первое, что нужно посмотреть, это журналы ошибок Apache (если вы используете Apache).

Надеюсь, это кому-нибудь поможет.

1 голос
/ 14 июля 2017

У меня была эта проблема раньше. Выяснил, у меня было другое приложение, использующее тот же порт (3000).

Простой способ узнать это:

В терминале введите netstat -a -p TCP -n | grep 3000 (замените используемый порт на «3000»). Если имеется более одного прослушивания, то этот порт уже занимает что-то другое. Вам следует остановить этот процесс или изменить порт для нового процесса.

1 голос
/ 19 сентября 2016

Вы можете попробовать этот curl -sS "http://www.example.com/backup.php" поместив ваш URL в "", который работал для меня, я не знаю точной причины, но я полагаю, что установка URL в "" завершает запрос к серверу или просто завершает запрос заголовка.

1 голос
/ 29 июля 2016

Это происходит, когда вы пытаетесь получить доступ к безопасному веб-сайту, например Https.

Я надеюсь, что вы пропустили '1003 *

Попробуйте изменить URL на curl -sS -u "имя пользователя: пароль" https://www.example.com/backup.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...