curl-fejlkoder: Komplet reference
Når en curl-kommando fejler, returnerer den en numerisk exitkode (også kaldet curl-fejlkode), der identificerer typen af fejl. Du kan tjekke curl-exitkoden ved at køre echo $? umiddelbart efter curl-kommandoen (eller $LASTEXITCODE i PowerShell). Exitkode 0 betyder succes; ethvert andet tal indikerer et specifikt problem — fra DNS-opløsningsfejl og forbindelsestimeouts til SSL-certifikatproblemer. Denne side er en komplet reference over de mest almindelige curl-fejlkoder med forklaringer, årsager og løsninger. Hvis du arbejder med curl-kommandoer i din kode, kan du indsætte dem i curl2code for at konvertere til dit foretrukne programmeringssprog.
Hurtig referencetabel
Succes. Operationen blev gennemført uden fejl.
Ikke-understøttet protokol. URL'en bruger en protokol, som curl ikke er bygget med understøttelse af.
Forkert URL-format. URL-syntaksen er ugyldig eller kunne ikke parses.
Kunne ikke opløse proxy. Det angivne proxy-hostnavn kunne ikke opløses.
DNS-opslag fejlede — hostnavnet kunne ikke opløses til en IP-adresse.
TCP-forbindelse mislykkedes — serveren er nede, porten er blokeret, eller firewall afviser forbindelser.
Delvis fil. Overførslen blev afbrudt, og kun en del af filen blev modtaget.
Serveren returnerede en HTTP-fejl (4xx/5xx), og --fail-flaget var brugt.
Skrivefejl. curl kunne ikke skrive modtagne data til disk (adgang nægtet eller disk fuld).
Operationen overskred den maksimalt tilladte tid (DNS, forbindelse eller overførsel).
SSL/TLS-handshake mislykkedes — protokolversion eller cipher suite-uoverensstemmelse.
Kunne ikke læse fil. En lokal fil refereret i forespørgslen kunne ikke åbnes eller læses.
Tomt svar fra server. Serveren lukkede forbindelsen uden at sende nogen data.
Forbindelsen blev nulstillet — serveren droppede forbindelsen under dataoverførslen.
SSL-certifikatverificering fejlede — udløbet, selvsigneret, eller CA-pakke er forældet.
Problem med SSL CA-certifikat. Kunne ikke læse eller parse den angivne CA-certifikatfil.
HTTP/2-streamfejl. En HTTP/2-protokolniveau-streamfejl opstod under overførslen.
Fejl 6: Kunne ikke opløse host
- Hvad det betyder
- Din terminal viser
curl: (6) Could not resolve host. curl kunne ikke opløse hostnavnet til en IP-adresse — DNS-opslaget fejlede, før nogen forbindelse blev forsøgt. - Årsager
- De mest almindelige årsager er: en stavefejl i hostnavnet (f.eks.
curl https://apiexample.comi stedet forapi.example.com), DNS-serverproblemer (din konfigurerede DNS er nede eller utilgængelig), ingen netværksforbindelse (Wi-Fi afbrudt, VPN ikke tilsluttet), eller domænet eksisterer faktisk ikke. - Sådan løser du det
- Kontrollér først, at URL'en er korrekt. Test derefter DNS-opløsningen direkte:
nslookup api.example.comellerdig api.example.com. Hvis DNS fejler, prøv en anden DNS-server:curl --dns-servers 8.8.8.8 https://api.example.com. Tjek dine/etc/resolv.conf- eller netværksindstillinger. Hvis du er bag en virksomheds-VPN, skal du sikre, at den interne DNS kan opløse hosten.
$ curl https://api.exmple.com/usersFejl 7: Forbindelse mislykkedes
- Hvad det betyder
- Din terminal viser
curl: (7) Failed to connect to host port: Connection refused. curl opløste hostnavnet, men kunne ikke etablere en TCP-forbindelse til serveren — forbindelsen blev aktivt afvist eller fik timeout på TCP-niveau. - Årsager
- Almindelige årsager inkluderer: serveren er nede eller kører ikke, en firewall blokerer porten (tjek både lokal og serverside firewall), porten er forkert (f.eks. kører tjenesten på 8080, men du forbinder til 443), eller serverens listen backlog er fuld under stor belastning.
- Sådan løser du det
- Bekræft, at serveren kører:
ping api.example.comogtelnet api.example.com 443. Tjek, om den korrekte port er åben:nmap -p 443 api.example.com. Deaktivér lokal firewall midlertidigt for at teste. Hvis du bruger Docker, skal du sikre, at containerens port er publiceret. Prøv med detaljeret tilstand:curl -v https://api.example.comfor at se præcis, hvor forbindelsen fejler.
$ curl https://localhost:8080/apiFejl 22: HTTP returnerede fejl
- Hvad det betyder
- Din terminal viser
curl: (22) The requested URL returned error. Serveren returnerede en HTTP-fejlstatuskode (4xx eller 5xx), og curl blev kaldt med-feller--fail, som fortæller curl at behandle HTTP-fejl som fejl. - Årsager
- Fejlen udløses af HTTP-statuskoder som 400 (Bad Request), 401 (Unauthorized), 403 (Forbidden), 404 (Not Found) eller 500 (Internal Server Error) — men kun når
--failbruges. Uden--failafslutter curl med kode 0 selv ved HTTP-fejl. Almindelige årsager: forkert URL, manglende autentificering, utilstrækkelige rettigheder eller fejl på serversiden. - Sådan løser du det
- Kør curl uden
--failfor at se det fulde svarindhold — det indeholder ofte den faktiske fejlmeddelelse. Tjek HTTP-statuskoden:curl -w "%{http_code}" -o /dev/null -s URL. For 401/403: bekræft dit auth-token eller API-nøgle. For 404: dobbelttjek URL-stien. For 500: problemet er på serversiden.
$ curl --fail https://api.example.com/nonexistentFejl 28: Timeout på operation
- Hvad det betyder
- Din terminal viser
curl: (28) Operation timed outellercurl: (28) Connection timed out. Operationen tog længere tid end den tilladte tid. Dette er den mest almindelige curl-fejl — den kan opstå under DNS-opløsning, TCP-forbindelse, SSL-handshake eller dataoverførsel. - Årsager
- Typiske årsager inkluderer: langsom eller overbelastet server, der ikke svarer i tide, netværkskongestion eller pakketab, firewall der stille dropper pakker (ingen afvisning, bare stilhed), for stramme timeout-værdier sat med
--connect-timeouteller--max-time, eller en fejlkonfigureret proxy, der forårsager forsinkelser. - Sådan løser du det
- Forøg timeout:
curl --connect-timeout 30 --max-time 120 URL. Brug detaljeret tilstand for at se, hvor det hænger:curl -v URL. Test netværkslatens:ping api.example.comogtraceroute api.example.com. Hvis du er bag en proxy, prøv at omgå den:curl --noproxy '*' URL. Ved store filoverførsler kan du overveje at bruge--retry 3med--retry-delay 5.
$ curl --connect-timeout 5 https://slow-api.example.com/dataFejl 35: SSL-forbindelsesfejl
- Hvad det betyder
- Din terminal viser
curl: (35) SSL connect error. SSL/TLS-handshake mislykkedes — curl kunne ikke etablere en sikker forbindelse til serveren. - Årsager
- Almindelige årsager: TLS-versionsuoverensstemmelse (serveren kræver TLS 1.3, men din curl understøtter kun op til TLS 1.2), cipher suite-inkompatibilitet, SSL-fejlkonfiguration på serveren (udløbet certifikat præsenteret under handshake, ufuldstændig kæde), serveren understøtter faktisk ikke HTTPS på den givne port, eller en proxy eller firewall opfanger SSL-forbindelsen (MITM).
- Sådan løser du det
- Tving en specifik TLS-version:
curl --tlsv1.2 URLellercurl --tlsv1.3 URL. Tjek, hvad serveren understøtter:openssl s_client -connect api.example.com:443. Opdatér curl og OpenSSL til de nyeste versioner. Hvis serveren bruger et selvsigneret certifikat, er det normalt fejl 60 i stedet — fejl 35 indikerer typisk en handshake-fejl på protokolniveau.
$ curl https://legacy-server.example.com/apiFejl 56: Modtagelsesfejl — Forbindelsen blev nulstillet
- Hvad det betyder
- Din terminal viser
curl: (56) Recv failure: Connection reset by peer. Forbindelsen blev etableret korrekt, men datamodtagelsen fejlede — serveren lukkede eller nulstillede forbindelsen uventet under overførslen. - Årsager
- Dette sker ofte, når: serveren crasher eller genstarter midt i overførslen, en load balancer eller proxy dropper forbindelsen (idle timeout, for stor forespørgsel), en firewall afbryder langvarige forbindelser, serveren har en keep-alive timeout, der er kortere end forventet, eller der er en netværksafbrydelse mellem klient og server.
- Sådan løser du det
- Prøv forespørgslen igen — midlertidige netværksproblemer er den mest almindelige årsag. Brug detaljeret tilstand:
curl -v URLfor at se det præcise fejlpunkt. Hvis fejlen opstår under store uploads, prøv chunked transfer:curl -H "Transfer-Encoding: chunked" URL. For Git-operationer, der viserRPC failed; curl 56, forøg bufferen:git config http.postBuffer 524288000.
$ curl https://api.example.com/large-downloadFejl 60: SSL-certifikatproblem
- Hvad det betyder
- Din terminal viser
curl: (60) SSL certificate problem: unable to get local issuer certificate. curl kunne ikke verificere serverens SSL-certifikat mod sin CA (Certificate Authority)-pakke. TLS-handshake blev gennemført på protokolniveau, men certifikatvalideringen fejlede. - Årsager
- De mest almindelige årsager: serveren bruger et selvsigneret certifikat, certifikatet er udløbet, certifikatkæden er ufuldstændig (manglende mellemliggende certifikater), curls CA-pakke er forældet (almindeligt på ældre systemer eller i Docker-containere), eller certifikatets Common Name / SAN matcher ikke det anmodede hostnavn.
- Sådan løser du det
- Opdatér CA-pakken:
curl --cacert /path/to/cacert.pem URL. Download en opdateret pakke fra https://curl.se/ca/cacert.pem. For at diagnosticere:openssl s_client -connect api.example.com:443 -showcerts. For selvsignerede certifikater i udvikling, brugcurl -k URL(aldrig i produktion — det deaktiverer al certifikatverificering). I Docker, installérca-certificates-pakken.
$ curl https://self-signed.example.com/apiAndre fejlkoder
Succes. Operationen blev gennemført uden fejl.
Ikke-understøttet protokol. URL'en bruger en protokol, som curl ikke er bygget med understøttelse af.
Forkert URL-format. URL-syntaksen er ugyldig eller kunne ikke parses.
Kunne ikke opløse proxy. Det angivne proxy-hostnavn kunne ikke opløses.
Delvis fil. Overførslen blev afbrudt, og kun en del af filen blev modtaget.
Skrivefejl. curl kunne ikke skrive modtagne data til disk (adgang nægtet eller disk fuld).
Kunne ikke læse fil. En lokal fil refereret i forespørgslen kunne ikke åbnes eller læses.
Tomt svar fra server. Serveren lukkede forbindelsen uden at sende nogen data.
Problem med SSL CA-certifikat. Kunne ikke læse eller parse den angivne CA-certifikatfil.
HTTP/2-streamfejl. En HTTP/2-protokolniveau-streamfejl opstod under overførslen.
Sådan fejlfinder du curl-fejl
Når curl fejler, hjælper disse tre flag dig med hurtigt at identificere grundårsagen — fra DNS-opløsning til SSL-handshake til svarpayload.
- 1
Aktivér detaljeret output
Kør
curl -v URLfor at se den fulde forespørgsels-/svarcyklus: DNS-opløsning, TCP-forbindelse, TLS-handshake, sendte forespørgselsheaders og modtagne svarheaders. Dette er det mest nyttige fejlfindingsflag. - 2
Tjek HTTP-statuskoden
Kør
curl -o /dev/null -s -w "%{http_code}" URLfor kun at få HTTP-statuskoden (200, 404, 500 osv.) uden svarteksten. Nyttigt til hurtige sundhedstjek og scripting. - 3
Vis fejl stille
Kør
curl -sS URLfor at undertrykke fremdriftslinjen (-s), men stadig vise fejl (-S). Perfekt til scripts, hvor du vil have rent output, men stadig skal fange fejl.
Ofte stillede spørgsmål
Hvordan tjekker man curl-exitkoden?
Efter at have kørt en curl-kommando gemmes exitkoden i shellens specielle variabel. I Bash/Zsh kører du echo $? umiddelbart efter curl-kommandoen. I PowerShell bruger du $LASTEXITCODE. I scripts kan du tjekke den med en betingelse: if curl -sf URL; then echo "OK"; else echo "Failed with code $?"; fi. Exitkode 0 betyder succes; ethvert andet tal indikerer en fejl. For at se både HTTP-statuskoden og curl-exitkoden, kombinér curl -w "%{http_code}" -o /dev/null -s URL; echo "Exit: $?". Bemærk, at curls exitkode er forskellig fra HTTP-statuskoden — curl returnerer 0 selv ved HTTP 404, medmindre du bruger flaget --fail.
Hvordan løser man curl-fejl 28 (operation timeout)?
Fejl 28 betyder, at forespørgslen overskred den maksimalt tilladte tid. Først, forøg timeout: curl --connect-timeout 30 --max-time 120 URL. --connect-timeout begrænser TCP-forbindelsesfasen, mens --max-time begrænser hele operationen. Derefter, diagnosticér flaskehalsen med curl -v URL — det detaljerede output viser præcis, hvor curl sidder fast (DNS, forbindelse, TLS eller overførsel). Almindelige løsninger: tjek din netværksforbindelse og DNS-indstillinger, bekræft at serveren svarer (ping og telnet), omgå proxyer med --noproxy '*', og for store downloads tilføj --retry 3 --retry-delay 5 for automatiske genforsøg.
Hvordan løser man curl SSL-certifikatfejl (fejl 60)?
Fejl 60 betyder, at curl ikke kan verificere serverens SSL-certifikat. Løsningen afhænger af årsagen. For en forældet CA-pakke: download en ny fra https://curl.se/ca/cacert.pem og brug curl --cacert /path/to/cacert.pem URL. For Docker-containere: installér pakken ca-certificates (apt-get install ca-certificates). For selvsignerede certifikater i udvikling: brug curl -k URL for at springe verificering over — men brug aldrig -k i produktion, da det deaktiverer al certifikatkontrol. For at diagnosticere: kør openssl s_client -connect host:443 -showcerts for at inspicere certifikatkæden. Hvis certifikatet er udløbet, eller hostnavnet ikke matcher, er problemet på serversiden.
Hvad betyder curl-fejl 7 (forbindelse mislykkedes)?
Fejl 7 betyder, at curl opløste hostnavnet til en IP-adresse, men ikke kunne etablere en TCP-forbindelse. Serveren afviste aktivt forbindelsen, eller forbindelsesforsøget fik timeout på netværksniveau. Almindelige årsager: tjenesten kører ikke på målhosten (tjek med systemctl status eller docker ps), en firewall blokerer porten (test med telnet host port), du bruger den forkerte port (f.eks. 80 i stedet for 443, eller 8080 for en udviklingsserver), eller serverens listen backlog er fuld under stor belastning. For at fejlfinde: brug curl -v URL og kig efter "Connected to" eller "Connection refused" i outputtet.