カールエラー52サーバーからの応答が空です


96

別のサーバーでホストされているPHPでバックアップスクリプトを実行するために、あるサーバーでcronジョブを設定しています。私が使用しているコマンドは、次のようにフォーマットされています。

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

最近、cronを実行するとこのエラーが発生します

curl: (52) Empty reply from server

これが何を意味するのかわかりません。ブラウザで直接リンクにアクセスすると、スクリプトは正常に実行され、小さなバックアップzipファイルが取得されます。

誰かがそれについて何か情報を提供できますか?


curlは出力ファイルプロセッサが何であるかを気にしないため、これは実際にはPHPとは何の関係もありません。
ケビンペノ

1
バックアップスクリプトが長時間実行されているため、curlがタイムアウトする可能性がありますか?接続して--connect-timeout <seconds>操作全体が実行されるまでのデフォルトのカール待機を増やしてみました--max-time <seconds>か?
Yzmir Ramirez 2012

@YzmirRamirezカールタイムアウトエラーコードは28のSrcある:ec.haxx.se/usingcurl-timeouts.html
Luckylooke

Docker + Uvicorn(FastAPI)を使用すると、
-host

回答:


72

これは、HTTPSを実行するサーバーでcurlがプレーンHTTPを実行するように要求された場合に発生する可能性があります。

例:

$ curl http://google.com:443
curl: (52) Empty reply from server

7
これが私の場合の状況でした。curl localhost:8443空の応答エラーが発生しました。curl -k https://localhost:8443ページを適切に提供しました。
lowly_junior_sysadmin 2017年

1
私はこれに偶然出くわしました、そして、私は行方不明のものを完全に逃しました。なぜもっと明確なエラーがないのだろうか(接続が拒否されたとしても:それはもっと理にかなっているだろう)。
新武蔵2018年

45

サーバーからの応答がない場合、Curlはこのエラーを出します。これは、HTTPが要求に何も応答しない場合のエラーであるためです。

あなたが抱えている問題は、あなたと問題のホストの間にファイアウォールやプロキシなどのネットワークインフラストラクチャが存在することだと思います。したがって、これを機能させるには、そのハードウェアの責任者と問題について話し合う必要があります。


18
これは、トラブルシューティングに対する間違ったアプローチである可能性があります。空の応答は、IP /ポートに接続できたが、サーバーが応答で何も返さなかったことを意味します。サービス自体に問題がある可能性があります。
ロバートクリスチャン

4
まあ、完全ではありません。これが私に起こったとき、それは私の認証プロキシがリモートホストに接続していなかったためでした。したがって、実際にはサービス自体に問題はありませんでした。
スティーブナイト

私の場合、サーバーが実行されているループバックインターフェイスではプロキシが無効になっています。
rbaleksandar 2018

私の場合、ハードドライブの空き容量が残っていないNGINXWebキャッシュサーバーです。
エイリアンライフフォーム


8

CPUまたはメモリの使用率が100%であるために、サーバーが応答しない場合に発生する可能性があります。

sonarqube APIにアクセスしようとしたときに、メモリがいっぱいになっているためにサーバーが応答しなかったときに、このエラーが発生しました


7

空の応答のもう1つの一般的な理由は、タイムアウトです。cronジョブが実行されている場所からPHP /ターゲットサーバーへのすべてのホップを確認します。おそらく、予想よりも早くリクエストを終了し、空のレスポンスになるデバイス/サーバー/ nginx / LB /プロキシがどこかにあります。


5

SSL接続の場合、これは、curlおよびSafariリクエスト中にセグメンテーション違反が発生する古いバージョンのnginxサーバーの問題が原因である可能性があります。このバグはnginxのバージョン1.10で修正されましたが、インターネット上にはまだ古いバージョンのnginxがたくさんあります。

nginxの管理者の場合:追加ssl_session_cache shared:SSL:1m;httpブロックすることで問題を解決する必要があります。

OPが非SSLのケースを要求していたことは承知していますが、これは「サーバーからの空の応答」の問題のグールのトップページであるため、頭を悩ませていた多くの人の1人だったのでSSLの回答をここに残しますこの問題で壁に向かって。


3

私の場合、これはPHPAPCの問題が原因でした。最初に確認するのは、Apacheエラーログです(Apacheを使用している場合)。

これが誰かに役立つことを願っています。


もう少し説明してもらえますか?これはAPCによってどのように引き起こされますか?私はこれをPHP内で実行することすらしておらず、コマンドラインを使用しているだけです。
ニノŠkopac

これはとても昔のことで、APCがこの問題の原因である理由を思い出せません。すみません、仕方がありません。
Andrew McCombe 2017

1

このcurl-sS " http://www.example.com/backup.php "を試すには、URLを ""に入れてください。正確な理由はわかりませんが、URLを "に入れると思います。 "サーバーへのリクエストを完了するか、ヘッダーリクエストを完了するだけです。


1

私は以前にこの問題を抱えていました。同じポート(3000)を使用する別のアプリケーションがあることがわかりました。

これを見つける簡単な方法:

ターミナルで、次のように入力しますnetstat -a -p TCP -n | grep 3000(使用しているポートを「3000」に置き換えます)。複数のリスニングがある場合、他の何かがすでにそのポートを占有しています。そのプロセスを停止するか、新しいプロセスのポートを変更する必要があります。


2
これはあなたが言及した非常に特殊なケースです。これは、一般的に、curlがこの応答を返す理由ではありません。この問題は、クライアント側ではなくサーバー側で対処する必要があることがわかりました。これは私が理解したところです。
Aashish Chaubey 2018年

1

私の場合(curl 7.47.0)は、content-lengthpostmanによって計算された値を使用してcurlコマンドのヘッダーを手動で設定したためです(postmanを使用してcurlコマンドパラメーターを生成し、シェルにコピーしました)。ヘッダーを削除した後content-length、正常に動作します。


1

このエラーは、サーバーがデータを処理している場合にも発生する可能性があります。通常、エントリが多く、レコードの作成と返送に時間がかかるREST APIWebサイトにファイルを投稿すると発生します。


0

これを試してください-> cURLを経由する代わりに、Telnetでアクセスしようとしているサイトにpingを実行してみてください。接続の試みが返す応答は、cURLが接続を試みたときに表示されるものとまったく同じになります(ただし、役に立たないほどわかりにくくなります)。ここで表示される内容に応じて、いくつかの結論の1つを引き出すことができます。

名前ベースの仮想ホストであるWebサイトに接続しようとしています。つまり、IPアドレスを介してアクセスすることはできません。ホスト名に問題があります。何かを間違って入力した可能性があります。パラメータにPOSTの代わりにGETを使用すると、より具体的な答えが得られることに注意してください。

この問題は、100-continueヘッダーにも関係している可能性があります。を実行してcurl_getinfo($ch, CURLINFO_HTTP_CODE)、結果を確認してください。


興味深い点。私は実際にレスポンスとしてHTMLを取得することができたtelnet hostnameGET <url>
ニノŠkopac


-1

私の場合、uwsgiを使用していて、プロパティhttp-timeoutを60秒以上追加しましたが、余分なスペースがあり、構成ファイルが正しく読み込まれなかったため、機能しませんでした。


-2

これは、Httpsなどの安全なWebサイトにアクセスしようとしたときに発生します。

私はあなたが 's'を逃したことを願っています

URLをcurl-sS -u "username:password" https://www.example.com/backup.phpに変更してみてください


3
非常にありません。ところで、単純な認証「username:password」はhttpsと何の関係があるのでしょうか。
ニノŠkopac

回答の認証部分は、それを回答に追加するのがなぜ奇妙なのかわからないように見えます。
スキッドカダ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.