curl hibakódok: Teljes referencia

Amikor egy curl parancs meghiúsul, egy numerikus kilépési kódot ad vissza (más néven curl hibakód), amely azonosítja a hiba típusát. A curl kilépési kódot az echo $? parancs futtatásával ellenőrizheted közvetlenül a curl parancs után (vagy $LASTEXITCODE PowerShell-ben). A 0 kilépési kód sikert jelent; bármely más szám egy konkrét problémát jelez — a DNS feloldási hibáktól és kapcsolati időtúllépésektől az SSL tanúsítvány problémákig. Ez az oldal a leggyakoribb curl hibakódok teljes referenciája magyarázatokkal, okokkal és javításokkal. Ha curl parancsokkal dolgozol a kódodban, illeszd be őket a curl2code-ba, hogy a választott programozási nyelvedre konvertáld.

Gyors referencia táblázat

0CURLE_OK

Siker. A művelet hiba nélkül befejeződött.

1CURLE_UNSUPPORTED_PROTOCOL

Nem támogatott protokoll. Az URL olyan protokollt használ, amelyet a curl nem támogat.

3CURLE_URL_MALFORMAT

Hibás URL. Az URL szintaxisa érvénytelen vagy nem értelmezhető.

5CURLE_COULDNT_RESOLVE_PROXY

A proxy nem feloldható. A megadott proxy hostnevet nem sikerült feloldani.

6CURLE_COULDNT_RESOLVE_HOST

A DNS keresés sikertelen — a hostnevet nem sikerült IP-címre feloldani.

7CURLE_COULDNT_CONNECT

A TCP kapcsolat sikertelen — a szerver nem fut, a port blokkolva van, vagy a tűzfal elutasítja a kapcsolatokat.

18CURLE_PARTIAL_FILE

Részleges fájl. Az átvitel megszakadt, és a fájlnak csak egy része érkezett meg.

22CURLE_HTTP_RETURNED_ERROR

A szerver HTTP hibát adott vissza (4xx/5xx) és a --fail kapcsoló volt használva.

23CURLE_WRITE_ERROR

Írási hiba. A curl nem tudta a fogadott adatokat lemezre írni (engedély megtagadva vagy megtelt a lemez).

28CURLE_OPERATION_TIMEDOUT

A művelet túllépte a maximálisan engedélyezett időt (DNS, csatlakozás vagy átvitel).

35CURLE_SSL_CONNECT_ERROR

Az SSL/TLS kézfogás sikertelen — protokoll verzió vagy rejtjelkészlet eltérés.

37CURLE_FILE_COULDNT_READ_FILE

A fájl nem olvasható. A kérésben hivatkozott helyi fájlt nem sikerült megnyitni vagy olvasni.

52CURLE_GOT_NOTHING

Üres válasz a szervertől. A szerver adatküldés nélkül zárta le a kapcsolatot.

56CURLE_RECV_ERROR

A kapcsolat megszakadt — a szerver megszakította a kapcsolatot az adatátvitel során.

60CURLE_SSL_CACERT

Az SSL tanúsítvány ellenőrzés sikertelen — lejárt, önaláírt, vagy a CA csomag elavult.

77CURLE_SSL_CACERT_BADFILE

SSL CA tanúsítvány probléma. A megadott CA tanúsítványfájlt nem sikerült olvasni vagy értelmezni.

92CURLE_HTTP2_STREAM

HTTP/2 stream hiba. HTTP/2 protokoll szintű stream hiba történt az átvitel során.

Error 6: A hostnév nem oldható fel

Mit jelent
A terminálod ezt mutatja: curl: (6) Could not resolve host. A curl nem tudta feloldani a hostnevet IP-címre — a DNS keresés sikertelen volt, mielőtt bármilyen kapcsolat létrejött volna.
Okok
A leggyakoribb okok: elgépelés a hostnévben (pl. curl https://apiexample.com a api.example.com helyett), DNS szerver problémák (a beállított DNS nem elérhető), nincs hálózati kapcsolat (Wi-Fi lecsatlakozva, VPN nincs csatlakoztatva), vagy a domain valóban nem létezik.
Hogyan javítsd
Először ellenőrizd, hogy az URL helyes-e. Majd teszteld a DNS feloldást közvetlenül: nslookup api.example.com vagy dig api.example.com. Ha a DNS sikertelen, próbálj más DNS szervert: curl --dns-servers 8.8.8.8 https://api.example.com. Ellenőrizd az /etc/resolv.conf fájlt vagy a hálózati beállításokat. Ha vállalati VPN mögött vagy, győződj meg róla, hogy a belső DNS fel tudja oldani a hostot.
$ curl https://api.exmple.com/users

Error 7: Sikertelen csatlakozás

Mit jelent
A terminálod ezt mutatja: curl: (7) Failed to connect to host port: Connection refused. A curl feloldotta a hostnevet, de nem tudott TCP kapcsolatot létesíteni a szerverrel — a kapcsolatot aktívan elutasították, vagy TCP szinten időtúllépés történt.
Okok
Gyakori okok: a szerver nem fut vagy leállt, tűzfal blokkolja a portot (ellenőrizd mind a helyi, mind a szerver oldali tűzfalat), rossz port (pl. a szolgáltatás 8080-on fut, de te 443-ra csatlakozol), vagy a szerver listen backlog-ja tele van nagy terhelés alatt.
Hogyan javítsd
Ellenőrizd, hogy a szerver fut-e: ping api.example.com és telnet api.example.com 443. Ellenőrizd, hogy a megfelelő port nyitva van-e: nmap -p 443 api.example.com. Ideiglenesen kapcsold ki a helyi tűzfalat teszteléshez. Docker használata esetén győződj meg róla, hogy a konténer portja publikálva van. Próbáld verbose móddal: curl -v https://api.example.com hogy pontosan lásd, hol hiúsul meg a kapcsolat.
$ curl https://localhost:8080/api

Error 22: HTTP hiba válasz

Mit jelent
A terminálod ezt mutatja: curl: (22) The requested URL returned error. A szerver HTTP hibakódot adott vissza (4xx vagy 5xx), és a curl a -f vagy --fail kapcsolóval lett meghívva, amely a HTTP hibákat sikertelenségként kezeli.
Okok
A hibát HTTP státuszkódok váltják ki, mint a 400 (Bad Request), 401 (Unauthorized), 403 (Forbidden), 404 (Not Found) vagy 500 (Internal Server Error) — de csak a --fail használata esetén. --fail nélkül a curl 0-val lép ki HTTP hibák esetén is. Gyakori okok: rossz URL, hiányzó hitelesítés, elégtelen jogosultságok vagy szerver oldali hibák.
Hogyan javítsd
Futtasd a curl-t --fail nélkül, hogy lásd a teljes válasz törzset — ez gyakran tartalmazza a tényleges hibaüzenetet. Ellenőrizd a HTTP státuszkódot: curl -w "%{http_code}" -o /dev/null -s URL. 401/403 esetén: ellenőrizd az auth tokenedet vagy API kulcsodat. 404 esetén: ellenőrizd az URL útvonalat. 500 esetén: a probléma szerver oldalon van.
$ curl --fail https://api.example.com/nonexistent

Error 28: Időtúllépés

Mit jelent
A terminálod ezt mutatja: curl: (28) Operation timed out vagy curl: (28) Connection timed out. A művelet tovább tartott a megengedettnél. Ez a leggyakoribb curl hiba — előfordulhat DNS feloldás, TCP kapcsolat, SSL kézfogás vagy adatátvitel során.
Okok
Jellemző okok: lassú vagy túlterhelt szerver, amely nem válaszol időben, hálózati torlódás vagy csomagvesztés, tűzfal csendben eldobja a csomagokat (nincs elutasítás, csak csend), túl szigorú időtúllépési értékek a --connect-timeout vagy --max-time kapcsolókkal, vagy proxy hibás konfiguráció késést okozva.
Hogyan javítsd
Növeld az időtúllépést: curl --connect-timeout 30 --max-time 120 URL. Használj verbose módot, hogy lásd, hol akad el: curl -v URL. Teszteld a hálózati késleltetést: ping api.example.com és traceroute api.example.com. Ha proxy mögött vagy, próbáld megkerülni: curl --noproxy '*' URL. Nagy fájlátvitelekhez fontold meg a --retry 3 és --retry-delay 5 használatát.
$ curl --connect-timeout 5 https://slow-api.example.com/data

Error 35: SSL csatlakozási hiba

Mit jelent
A terminálod ezt mutatja: curl: (35) SSL connect error. Az SSL/TLS kézfogás sikertelen volt — a curl nem tudott biztonságos kapcsolatot létesíteni a szerverrel.
Okok
Gyakori okok: TLS verzió eltérés (a szerver TLS 1.3-at igényel, de a curl-öd csak TLS 1.2-ig támogat), rejtjelkészlet inkompatibilitás, szerver SSL hibás konfiguráció (lejárt tanúsítvány a kézfogás során, hiányos lánc), a szerver nem támogatja valójában a HTTPS-t az adott porton, vagy proxy vagy tűzfal elfogja az SSL kapcsolatot (MITM).
Hogyan javítsd
Kényszeríts ki egy adott TLS verziót: curl --tlsv1.2 URL vagy curl --tlsv1.3 URL. Ellenőrizd, mit támogat a szerver: openssl s_client -connect api.example.com:443. Frissítsd a curl-t és az OpenSSL-t a legújabb verzióra. Ha a szerver önaláírt tanúsítványt használ, az általában error 60 — az error 35 jellemzően protokoll szintű kézfogási hibát jelez.
$ curl https://legacy-server.example.com/api

Error 56: Fogadási hiba — A kapcsolat megszakadt

Mit jelent
A terminálod ezt mutatja: curl: (56) Recv failure: Connection reset by peer. A kapcsolat sikeresen létrejött, de az adatfogadás sikertelen volt — a szerver váratlanul lezárta vagy visszaállította a kapcsolatot az átvitel során.
Okok
Ez gyakran előfordul, amikor: a szerver összeomlik vagy újraindul átvitel közben, egy terheléselosztó vagy proxy megszakítja a kapcsolatot (üresjárati időtúllépés, túl nagy kérés), tűzfal megszünteti a hosszú életű kapcsolatokat, a szerver keep-alive időtúllépése rövidebb a vártnál, vagy hálózati megszakítás van a kliens és a szerver között.
Hogyan javítsd
Próbáld meg újra a kérést — az átmeneti hálózati problémák a leggyakoribb ok. Használj verbose módot: curl -v URL a hiba pontos helyének megállapításához. Ha a hiba nagy feltöltések során történik, próbáld a darabolt átvitelt: curl -H "Transfer-Encoding: chunked" URL. Git műveleteknél, ahol RPC failed; curl 56 jelenik meg, növeld a puffert: git config http.postBuffer 524288000.
$ curl https://api.example.com/large-download

Error 60: SSL tanúsítvány probléma

Mit jelent
A terminálod ezt mutatja: curl: (60) SSL certificate problem: unable to get local issuer certificate. A curl nem tudta ellenőrizni a szerver SSL tanúsítványát a CA (tanúsítványkiadó) csomagjával. A TLS kézfogás protokoll szinten befejeződött, de a tanúsítvány érvényesítés sikertelen volt.
Okok
A leggyakoribb okok: a szerver önaláírt tanúsítványt használ, a tanúsítvány lejárt, a tanúsítványlánc hiányos (hiányzó köztes tanúsítványok), a curl CA csomagja elavult (gyakori régebbi rendszereken vagy Docker konténerekben), vagy a tanúsítvány Common Name / SAN nem egyezik a kért hostnévvel.
Hogyan javítsd
Frissítsd a CA csomagot: curl --cacert /path/to/cacert.pem URL. Tölts le frissített csomagot innen: https://curl.se/ca/cacert.pem. Diagnosztikához: openssl s_client -connect api.example.com:443 -showcerts. Fejlesztési célú önaláírt tanúsítványokhoz használd a curl -k URL parancsot (soha ne éles környezetben — ez kikapcsolja az összes tanúsítvány-ellenőrzést). Dockerben telepítsd a ca-certificates csomagot.
$ curl https://self-signed.example.com/api

Egyéb hibakódok

0CURLE_OK

Siker. A művelet hiba nélkül befejeződött.

1CURLE_UNSUPPORTED_PROTOCOL

Nem támogatott protokoll. Az URL olyan protokollt használ, amelyet a curl nem támogat.

3CURLE_URL_MALFORMAT

Hibás URL. Az URL szintaxisa érvénytelen vagy nem értelmezhető.

5CURLE_COULDNT_RESOLVE_PROXY

A proxy nem feloldható. A megadott proxy hostnevet nem sikerült feloldani.

18CURLE_PARTIAL_FILE

Részleges fájl. Az átvitel megszakadt, és a fájlnak csak egy része érkezett meg.

23CURLE_WRITE_ERROR

Írási hiba. A curl nem tudta a fogadott adatokat lemezre írni (engedély megtagadva vagy megtelt a lemez).

37CURLE_FILE_COULDNT_READ_FILE

A fájl nem olvasható. A kérésben hivatkozott helyi fájlt nem sikerült megnyitni vagy olvasni.

52CURLE_GOT_NOTHING

Üres válasz a szervertől. A szerver adatküldés nélkül zárta le a kapcsolatot.

77CURLE_SSL_CACERT_BADFILE

SSL CA tanúsítvány probléma. A megadott CA tanúsítványfájlt nem sikerült olvasni vagy értelmezni.

92CURLE_HTTP2_STREAM

HTTP/2 stream hiba. HTTP/2 protokoll szintű stream hiba történt az átvitel során.

Hogyan keress hibát curl hibáknál

Amikor a curl meghiúsul, ez a három kapcsoló segít gyorsan azonosítani a kiváltó okot — a DNS feloldástól az SSL kézfogáson át a válasz tartalomig.

  1. 1

    Verbose kimenet engedélyezése

    Futtasd a curl -v URL parancsot a teljes kérés/válasz ciklus megtekintéséhez: DNS feloldás, TCP kapcsolat, TLS kézfogás, elküldött kérés fejlécek és fogadott válasz fejlécek. Ez az egyetlen leghasznosabb hibakeresési kapcsoló.

  2. 2

    HTTP státuszkód ellenőrzése

    Futtasd a curl -o /dev/null -s -w "%{http_code}" URL parancsot, hogy csak a HTTP státuszkódot kapd meg (200, 404, 500 stb.) a válasz törzs nélkül. Hasznos gyors állapotellenőrzésekhez és szkripteléshez.

  3. 3

    Hibák csendes megjelenítése

    Futtasd a curl -sS URL parancsot a folyamatjelző elnyomásához (-s), de a hibák megjelenítésének megtartásához (-S). Tökéletes szkriptekhez, ahol tiszta kimenetet szeretnél, de a hibákat el kell kapnod.

Gyakran ismételt kérdések

Hogyan ellenőrizhetem a curl kilépési kódot?

Egy curl parancs futtatása után a kilépési kód a shell speciális változójában tárolódik. Bash/Zsh-ban futtasd az echo $? parancsot közvetlenül a curl parancs után. PowerShell-ben használd a $LASTEXITCODE változót. Szkriptekben feltétellel ellenőrizheted: if curl -sf URL; then echo "OK"; else echo "Failed with code $?"; fi. A 0 kilépési kód sikert jelent; bármely más szám hibát jelez. A HTTP státuszkód és a curl kilépési kód egyidejű megtekintéséhez kombináld: curl -w "%{http_code}" -o /dev/null -s URL; echo "Exit: $?". Ne feledd, hogy a curl kilépési kódja különbözik a HTTP státuszkódtól — a curl 0-t ad vissza még HTTP 404 esetén is, hacsak nem használod a --fail kapcsolót.

Hogyan javítható a curl error 28 (időtúllépés)?

Az error 28 azt jelenti, hogy a kérés túllépte a maximálisan engedélyezett időt. Először növeld az időtúllépést: curl --connect-timeout 30 --max-time 120 URL. A --connect-timeout a TCP kapcsolat fázist korlátozza, míg a --max-time a teljes műveletet. Ezután diagnosztizáld a szűk keresztmetszetet a curl -v URL paranccsal — a verbose kimenet pontosan megmutatja, hol akad el a curl (DNS, csatlakozás, TLS vagy átvitel). Gyakori javítások: ellenőrizd a hálózati kapcsolatot és DNS beállításokat, ellenőrizd, hogy a szerver válaszol-e (ping és telnet), kerüld meg a proxykat a --noproxy '*' kapcsolóval, és nagy letöltéseknél add hozzá a --retry 3 --retry-delay 5 kapcsolókat az automatikus újrapróbálkozáshoz.

Hogyan javíthatók a curl SSL tanúsítvány hibák (error 60)?

Az error 60 azt jelenti, hogy a curl nem tudja ellenőrizni a szerver SSL tanúsítványát. A javítás az októl függ. Elavult CA csomag esetén: tölts le egy frisset innen: https://curl.se/ca/cacert.pem és használd a curl --cacert /path/to/cacert.pem URL parancsot. Docker konténerek esetén: telepítsd a ca-certificates csomagot (apt-get install ca-certificates). Fejlesztési célú önaláírt tanúsítványok esetén: használd a curl -k URL parancsot az ellenőrzés kihagyásához — de soha ne használd a -k-t éles környezetben, mert az kikapcsolja az összes tanúsítvány-ellenőrzést. Diagnosztikához: futtasd az openssl s_client -connect host:443 -showcerts parancsot a tanúsítványlánc vizsgálatához. Ha a tanúsítvány lejárt vagy a hostnév nem egyezik, a probléma szerver oldalon van.

Mit jelent a curl error 7 (sikertelen csatlakozás)?

Az error 7 azt jelenti, hogy a curl feloldotta a hostnevet IP-címre, de nem tudott TCP kapcsolatot létesíteni. A szerver aktívan elutasította a kapcsolatot, vagy a kapcsolódási kísérlet hálózati szinten időtúllépésbe futott. Gyakori okok: a szolgáltatás nem fut a célgépen (ellenőrizd a systemctl status vagy docker ps paranccsal), tűzfal blokkolja a portot (teszteld a telnet host port paranccsal), rossz portot használsz (pl. 80-at 443 helyett, vagy 8080-at egy fejlesztői szervernél), vagy a szerver listen backlog-ja tele van nagy terhelés alatt. Hibakereséshez: használd a curl -v URL parancsot és keresd a "Connected to" vagy "Connection refused" üzeneteket a kimenetben.