curl 52 empty reply from server

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

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

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

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

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

Curl дает эту ошибку, если нет ответа с сервера, поскольку HTTP-сообщение не является ответом на запрос.

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

Это может произойти, если сервер не отвечает из-за 100% загрузки процессора или памяти.

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

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

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

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

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

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

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

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

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

Надеюсь, вы пропустили ‘

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

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

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

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

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

Попробуйте this → Вместо того, чтобы проходить через cURL, попробуйте выполнить ping-сайт, который вы пытаетесь связаться с Telnet. Ответ, который возвращает попытка подключения, будет именно тем, что видит cURL, когда он пытается подключиться (но который он бесполезно запутывает от вас). Теперь, в зависимости от того, что вы видите здесь, вы можете сделать один из нескольких выводов:

Вы пытаетесь подключиться к веб-сайту, на котором основан виртуальный хост на основе имени, что означает, что он не может быть достигнут через IP-адрес. Что-то не так с именем хоста — возможно, вы что-то ошиблись. Обратите внимание, что использование GET вместо POST для параметров даст вам более конкретный ответ.

Проблема также может быть связана с заголовком 100-continue. Попробуйте запустить curl_getinfo($ch, CURLINFO_HTTP_CODE) и проверьте результат.

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

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

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

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

9 ответов

Curl дает эту ошибку, если нет ответа с сервера, поскольку HTTP-сообщение не является ответом на запрос.

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

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

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

Это может произойти, если сервер не отвечает из-за 100% загрузки процессора или памяти.

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

2 Euperia [2011-11-15 17:37:00]

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

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

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

Надеюсь, вы пропустили ‘

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

1 ginna [2017-07-14 01:25:00]

Моя проблема заключалась в том, что у меня было другое приложение, использующее тот же порт (3000).

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

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

1 omar [2016-09-19 05:35:00]

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

0 Felix [2016-09-07 23:40:00]

Попробуйте this → Вместо того, чтобы проходить через cURL, попробуйте выполнить ping-сайт, который вы пытаетесь связаться с Telnet. Ответ, который возвращает попытка подключения, будет именно тем, что видит cURL, когда он пытается подключиться (но который он бесполезно запутывает от вас). Теперь, в зависимости от того, что вы видите здесь, вы можете сделать один из нескольких выводов:

Вы пытаетесь подключиться к веб-сайту, на котором основан виртуальный хост на основе имени, что означает, что он не может быть достигнут через IP-адрес. Что-то не так с именем хоста — возможно, вы что-то ошиблись. Обратите внимание, что использование GET вместо POST для параметров даст вам более конкретный ответ.

Проблема также может быть связана с заголовком 100-continue. Попробуйте запустить curl_getinfo($ch, CURLINFO_HTTP_CODE) и проверьте результат.

Thanks for replying to my earlier message. I did not enable the option of
receiving e-mail from this mailing list.. I thought that I could read the
reply and also send reply to the thread online, instead of receiving it in
my inbox. Therefore, instead of replying to your thread, I am creating a
new message as I did not receive your reply in my inbox. Sorry for
duplicating part of the message. I have now changed the necessary option in
my account.

Previously and now , I had typed the following commands

Both of them worked fine, i.e I get proper code in the reply.

I am still getting the error mentioned below, which is same as earlier,
even after updating my NSS using
yum upgrade nss

Please help me by giving me hints about how to solve this problem.

I am getting the following message now.

«* About to connect() to www.tvg.com port 443 (#0)
* Trying 208.88.35.20. connected
* Connected to www.tvg.com (208.88.35.20) port 443 (#0)
* Initializing NSS with certpath: /etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* SSL connection using TLS_RSA_WITH_AES_128_CBC_SHA
* Server certificate:
* subject: CN=www.tvg.com,OU=Engineering,O=T V G,L=Beaverton,ST=Oregon,C=US
* start date: Oct 14 00:00:00 2011 GMT
* expire date: Oct 22 23:59:59 2016 GMT
* common name: www.tvg.com
* issuer: CN=Thawte SSL CA,O=»Thawte, Inc.»,C=US
> GET / HTTP/1.1
> User-Agent: curl/7.21.0 (i386-redhat-linux-gnu) libcurl/7.21.0 NSS/
3.12.10.0 zlib/1.2.5 libidn/1.18 libssh2/1.2.4
> Host: www.tvg.com
> Accept: */*
>
* Empty reply from server
* Connection #0 to host www.tvg.com left intact
curl: (52) Empty reply from server
* Closing connection #0″

This was your earlier reply.

«On Thu, 17 May 2012, Ajay wrote:

*> * Connected to www.tvg.com (208.88.35.20) port 443 (#0) *

*>> GET / HTTP/1.1 *
*>> User-Agent: curl/7.21.0 (i386-redhat-linux-gnu) libcurl/7.21.0 NSS/ *
*> 3.12.10.0 zlib/1.2.5 libidn/1.18 libssh2/1.2.4 *
*>> Host: www.tvg.com *
*>> Accept: */* *
*>> *
*> * Empty reply from server *

This means curl got no error reported from the SSL library (NSS) but it
didn’t
get any response from the HTTPS server and that is an error.

*> I searched curl-users archive regarding this type of reply and I found
the *
*> following thread that mentions about «Unpatched client and patched
OpenSSL *
*> server» http://curl.haxx.se/mail/archive-2010-12/0004.html *

That’s one case showing the same symptom, yes, but we can’t tell if the
reasons are the same.

*> As mentioned in the above URL, I do not know how to set the parameter *
*> «SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION» Could anyone of you please
help *
*> me how to set this parameter, if this is the solution or suggest an *
*> alternative way of solving the problem. *

I believe that is an OpenSSL option and A) it would require a rebuild to
fix
and B) your current curl doesn’t even use OpenSSL but NSS. and as I said,
we
don’t even know that is the reason for the problem.

*> I tried executing the same curl command with other https website and I
am *
*> getting a non-empty response. *

That sounds like a more fundamental problem with your NSS library then. Is
there _any_ HTTPS site that works for you?

*> I am getting the following output *
*> OpenSSL 1.0.0e-fips 6 Sep 2011 *

Your curl runs NSS so the OpenSSL version isn’t relevant here.

Оцените статью