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
Siker. A művelet hiba nélkül befejeződött.
Nem támogatott protokoll. Az URL olyan protokollt használ, amelyet a curl nem támogat.
Hibás URL. Az URL szintaxisa érvénytelen vagy nem értelmezhető.
A proxy nem feloldható. A megadott proxy hostnevet nem sikerült feloldani.
A DNS keresés sikertelen — a hostnevet nem sikerült IP-címre feloldani.
A TCP kapcsolat sikertelen — a szerver nem fut, a port blokkolva van, vagy a tűzfal elutasítja a kapcsolatokat.
Részleges fájl. Az átvitel megszakadt, és a fájlnak csak egy része érkezett meg.
A szerver HTTP hibát adott vissza (4xx/5xx) és a --fail kapcsoló volt használva.
Írási hiba. A curl nem tudta a fogadott adatokat lemezre írni (engedély megtagadva vagy megtelt a lemez).
A művelet túllépte a maximálisan engedélyezett időt (DNS, csatlakozás vagy átvitel).
Az SSL/TLS kézfogás sikertelen — protokoll verzió vagy rejtjelkészlet eltérés.
A fájl nem olvasható. A kérésben hivatkozott helyi fájlt nem sikerült megnyitni vagy olvasni.
Üres válasz a szervertől. A szerver adatküldés nélkül zárta le a kapcsolatot.
A kapcsolat megszakadt — a szerver megszakította a kapcsolatot az adatátvitel során.
Az SSL tanúsítvány ellenőrzés sikertelen — lejárt, önaláírt, vagy a CA csomag elavult.
SSL CA tanúsítvány probléma. A megadott CA tanúsítványfájlt nem sikerült olvasni vagy értelmezni.
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.comaapi.example.comhelyett), 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.comvagydig 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.conffá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/usersError 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éstelnet 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.comhogy pontosan lásd, hol hiúsul meg a kapcsolat.
$ curl https://localhost:8080/apiError 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-fvagy--failkapcsoló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
--failhasználata esetén.--failné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
--failné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/nonexistentError 28: Időtúllépés
- Mit jelent
- A terminálod ezt mutatja:
curl: (28) Operation timed outvagycurl: (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-timeoutvagy--max-timekapcsoló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éstraceroute 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 5használatát.
$ curl --connect-timeout 5 https://slow-api.example.com/dataError 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 URLvagycurl --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/apiError 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 URLa 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, aholRPC failed; curl 56jelenik meg, növeld a puffert:git config http.postBuffer 524288000.
$ curl https://api.example.com/large-downloadError 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 acurl -k URLparancsot (soha ne éles környezetben — ez kikapcsolja az összes tanúsítvány-ellenőrzést). Dockerben telepítsd aca-certificatescsomagot.
$ curl https://self-signed.example.com/apiEgyéb hibakódok
Siker. A művelet hiba nélkül befejeződött.
Nem támogatott protokoll. Az URL olyan protokollt használ, amelyet a curl nem támogat.
Hibás URL. Az URL szintaxisa érvénytelen vagy nem értelmezhető.
A proxy nem feloldható. A megadott proxy hostnevet nem sikerült feloldani.
Részleges fájl. Az átvitel megszakadt, és a fájlnak csak egy része érkezett meg.
Írási hiba. A curl nem tudta a fogadott adatokat lemezre írni (engedély megtagadva vagy megtelt a lemez).
A fájl nem olvasható. A kérésben hivatkozott helyi fájlt nem sikerült megnyitni vagy olvasni.
Üres válasz a szervertől. A szerver adatküldés nélkül zárta le a kapcsolatot.
SSL CA tanúsítvány probléma. A megadott CA tanúsítványfájlt nem sikerült olvasni vagy értelmezni.
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
Verbose kimenet engedélyezése
Futtasd a
curl -v URLparancsot 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
HTTP státuszkód ellenőrzése
Futtasd a
curl -o /dev/null -s -w "%{http_code}" URLparancsot, 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
Hibák csendes megjelenítése
Futtasd a
curl -sS URLparancsot 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.