curl xato kodlari: To'liq ma'lumotnoma

curl buyrug'i muvaffaqiyatsiz bo'lganda, u xato turini aniqlovchi raqamli chiqish kodini (curl xato kodi deb ham ataladi) qaytaradi. curl chiqish kodini curl buyrug'idan darhol keyin echo $? (yoki PowerShell'da $LASTEXITCODE) buyrug'ini ishga tushirish orqali tekshirishingiz mumkin. 0 chiqish kodi muvaffaqiyatni bildiradi; boshqa har qanday raqam muayyan muammoni ko'rsatadi — DNS hal qilish xatolaridan va ulanish taymaytlaridan SSL sertifikat muammolarigacha. Bu sahifa eng ko'p uchraydigan curl xato kodlarining tushuntirishlari, sabablari va yechimlari bilan to'liq ma'lumotnomasi hisoblanadi. Agar siz kodingizda curl buyruqlari bilan ishlayotgan bo'lsangiz, ularni dasturlash tilingizga aylantirish uchun curl2code'ga joylashtiring.

Tezkor ma'lumotnoma jadvali

0CURLE_OK

Muvaffaqiyat. Operatsiya hech qanday xatosiz yakunlandi.

1CURLE_UNSUPPORTED_PROTOCOL

Qo'llab-quvvatlanmaydigan protokol. URL curl qurish vaqtida qo'llab-quvvatlanmagan protokoldan foydalanmoqda.

3CURLE_URL_MALFORMAT

Noto'g'ri URL. URL sintaksisi noto'g'ri yoki tahlil qilib bo'lmadi.

5CURLE_COULDNT_RESOLVE_PROXY

Proksi-serverni hal qilib bo'lmadi. Ko'rsatilgan proksi xost nomi hal qilinmadi.

6CURLE_COULDNT_RESOLVE_HOST

DNS so'rovi muvaffaqiyatsiz — xost nomi IP manzilga aylantirilmadi.

7CURLE_COULDNT_CONNECT

TCP ulanishi muvaffaqiyatsiz — server ishlamayapti, port bloklangan yoki xavfsizlik devori ulanishlarni rad etmoqda.

18CURLE_PARTIAL_FILE

Qisman fayl. Uzatish to'xtatildi va faylning faqat bir qismi qabul qilindi.

22CURLE_HTTP_RETURNED_ERROR

Server HTTP xato qaytardi (4xx/5xx) va --fail bayrog'i ishlatilgan.

23CURLE_WRITE_ERROR

Yozish xatosi. curl qabul qilingan ma'lumotlarni diskka yoza olmadi (ruxsat rad etildi yoki disk to'la).

28CURLE_OPERATION_TIMEDOUT

Operatsiya maksimal ruxsat etilgan vaqtdan oshdi (DNS, ulanish yoki uzatish).

35CURLE_SSL_CONNECT_ERROR

SSL/TLS qo'l siqishi muvaffaqiyatsiz — protokol versiyasi yoki shifrlash to'plami nomuvofiqligi.

37CURLE_FILE_COULDNT_READ_FILE

Faylni o'qib bo'lmadi. So'rovda ko'rsatilgan mahalliy faylni ochib yoki o'qib bo'lmadi.

52CURLE_GOT_NOTHING

Serverdan bo'sh javob. Server hech qanday ma'lumot yubormasdan ulanishni yopdi.

56CURLE_RECV_ERROR

Ulanish tiklandi — server ma'lumot uzatish vaqtida ulanishni tashlab yubordi.

60CURLE_SSL_CACERT

SSL sertifikat tekshiruvi muvaffaqiyatsiz — muddati o'tgan, o'zi imzolagan yoki CA to'plami eskirgan.

77CURLE_SSL_CACERT_BADFILE

SSL CA sertifikat muammosi. Ko'rsatilgan CA sertifikat faylini o'qib yoki tahlil qilib bo'lmadi.

92CURLE_HTTP2_STREAM

HTTP/2 oqim xatosi. Uzatish vaqtida HTTP/2 protokol darajasida oqim xatosi yuz berdi.

Xato 6: Xost nomini hal qilib bo'lmadi

Bu nimani anglatadi
Terminalingizda curl: (6) Could not resolve host ko'rsatiladi. curl xost nomini IP manzilga aylantira olmadi — DNS so'rovi hech qanday ulanish urinilmasidan oldin muvaffaqiyatsiz bo'ldi.
Sabablari
Eng ko'p uchraydigan sabablar: xost nomida xato (masalan, api.example.com o'rniga curl https://apiexample.com), DNS server muammolari (sozlangan DNS'ingiz ishlamayapti yoki ulanib bo'lmaydi), tarmoq ulanishi yo'q (Wi-Fi uzilgan, VPN ulanmagan) yoki domen haqiqatan ham mavjud emas.
Qanday tuzatish mumkin
Birinchi navbatda URL to'g'riligini tekshiring. So'ng DNS hal qilishni to'g'ridan-to'g'ri sinab ko'ring: nslookup api.example.com yoki dig api.example.com. Agar DNS muvaffaqiyatsiz bo'lsa, boshqa DNS serverni sinab ko'ring: curl --dns-servers 8.8.8.8 https://api.example.com. /etc/resolv.conf yoki tarmoq sozlamalarini tekshiring. Korporativ VPN orqasida bo'lsangiz, ichki DNS xostni hal qila olishini tekshiring.
$ curl https://api.exmple.com/users

Xato 7: Ulanish muvaffaqiyatsiz

Bu nimani anglatadi
Terminalingizda curl: (7) Failed to connect to host port: Connection refused ko'rsatiladi. curl xost nomini hal qildi, lekin serverga TCP ulanishni o'rnata olmadi — ulanish TCP darajasida faol ravishda rad etildi yoki taymayt bo'ldi.
Sabablari
Keng tarqalgan sabablar: server ishlamayapti yoki ishga tushirilmagan, xavfsizlik devori portni bloklayapti (mahalliy va server tomonidagi xavfsizlik devorlarini tekshiring), port noto'g'ri (masalan, xizmat 8080 portda ishlaydi, lekin siz 443 ga ulanmoqdasiz) yoki serverning tinglash navbati to'lgan yuqori yuk ostida.
Qanday tuzatish mumkin
Serverning ishlashini tekshiring: ping api.example.com va telnet api.example.com 443. To'g'ri port ochiqligini tekshiring: nmap -p 443 api.example.com. Sinash uchun mahalliy xavfsizlik devorini vaqtincha o'chiring. Docker ishlatayotgan bo'lsangiz, konteyner porti e'lon qilinganligini tekshiring. Ulanish aniq qayerda muvaffaqiyatsiz bo'layotganini ko'rish uchun verbose rejimda sinab ko'ring: curl -v https://api.example.com.
$ curl https://localhost:8080/api

Xato 22: HTTP xato qaytardi

Bu nimani anglatadi
Terminalingizda curl: (22) The requested URL returned error ko'rsatiladi. Server HTTP xato holat kodini (4xx yoki 5xx) qaytardi va curl -f yoki --fail bilan ishga tushirilgan bo'lib, bu curl'ga HTTP xatolarini muvaffaqiyatsizlik sifatida qabul qilishni buyuradi.
Sabablari
Xato 400 (Bad Request), 401 (Unauthorized), 403 (Forbidden), 404 (Not Found) yoki 500 (Internal Server Error) kabi HTTP holat kodlari tomonidan chaqiriladi — lekin faqat --fail ishlatilganda. --fail siz curl HTTP xatolarida ham 0 kodi bilan chiqadi. Keng tarqalgan sabablar: noto'g'ri URL, autentifikatsiya etishmayotgan, ruxsatlar yetarli emas yoki server tomonidagi xatolar.
Qanday tuzatish mumkin
To'liq javob tanasini ko'rish uchun curl'ni --fail siz ishga tushiring — unda ko'pincha haqiqiy xato xabari bo'ladi. HTTP holat kodini tekshiring: curl -w "%{http_code}" -o /dev/null -s URL. 401/403 uchun: autentifikatsiya tokeningiz yoki API kalitingizni tekshiring. 404 uchun: URL yo'lini qayta tekshiring. 500 uchun: muammo server tomonida.
$ curl --fail https://api.example.com/nonexistent

Xato 28: Operatsiya taymayt bo'ldi

Bu nimani anglatadi
Terminalingizda curl: (28) Operation timed out yoki curl: (28) Connection timed out ko'rsatiladi. Operatsiya ruxsat etilgan vaqtdan ko'proq davom etdi. Bu eng keng tarqalgan curl xatosi — u DNS hal qilish, TCP ulanish, SSL qo'l siqish yoki ma'lumot uzatish vaqtida yuzaga kelishi mumkin.
Sabablari
Odatiy sabablar: sekin yoki haddan tashqari yuklangan server o'z vaqtida javob bermayotgani, tarmoq tiqilishi yoki paketlar yo'qolishi, xavfsizlik devori paketlarni jimgina tashlab yuborayotgani (rad etish yo'q, faqat jimlik), --connect-timeout yoki --max-time bilan haddan tashqari qat'iy taymayt qiymatlari o'rnatilgani yoki proksi noto'g'ri sozlangani kechikishlarga sabab bo'layotgani.
Qanday tuzatish mumkin
Taymaytni oshiring: curl --connect-timeout 30 --max-time 120 URL. Qayerda to'xtab qolganini ko'rish uchun verbose rejimdan foydalaning: curl -v URL. Tarmoq kechikishini sinab ko'ring: ping api.example.com va traceroute api.example.com. Proksi orqasida bo'lsangiz, uni chetlab o'tishga harakat qiling: curl --noproxy '*' URL. Katta fayllarni uzatish uchun --retry 3 va --retry-delay 5 dan foydalanishni o'ylab ko'ring.
$ curl --connect-timeout 5 https://slow-api.example.com/data

Xato 35: SSL ulanish xatosi

Bu nimani anglatadi
Terminalingizda curl: (35) SSL connect error ko'rsatiladi. SSL/TLS qo'l siqishi muvaffaqiyatsiz bo'ldi — curl server bilan xavfsiz ulanishni o'rnata olmadi.
Sabablari
Keng tarqalgan sabablar: TLS versiya nomuvofiqligi (server TLS 1.3 talab qiladi, lekin sizning curl faqat TLS 1.2 gacha qo'llab-quvvatlaydi), shifrlash to'plami nomuvofiqligi, server SSL noto'g'ri sozlangan (qo'l siqish vaqtida muddati o'tgan sertifikat taqdim etilgan, to'liq bo'lmagan zanjir), server berilgan portda aslida HTTPS'ni qo'llab-quvvatlamaydi yoki proksi yoki xavfsizlik devori SSL ulanishni tutib turmoqda (MITM).
Qanday tuzatish mumkin
Muayyan TLS versiyasini majburlang: curl --tlsv1.2 URL yoki curl --tlsv1.3 URL. Server nimani qo'llab-quvvatlashini tekshiring: openssl s_client -connect api.example.com:443. curl va OpenSSL'ni eng so'nggi versiyalarga yangilang. Agar server o'zi imzolagan sertifikat ishlatsa, bu odatda xato 60 bo'ladi — xato 35 odatda protokol darajasidagi qo'l siqish muvaffaqiyatsizligini bildiradi.
$ curl https://legacy-server.example.com/api

Xato 56: Qabul qilish muvaffaqiyatsiz — Ulanish tiklandi

Bu nimani anglatadi
Terminalingizda curl: (56) Recv failure: Connection reset by peer ko'rsatiladi. Ulanish muvaffaqiyatli o'rnatilgan edi, lekin ma'lumotlarni qabul qilish muvaffaqiyatsiz bo'ldi — server uzatish vaqtida ulanishni kutilmaganda yopdi yoki tikladi.
Sabablari
Bu ko'pincha quyidagi hollarda yuz beradi: server uzatish paytida buziladi yoki qayta ishga tushadi, yuk balanslagich yoki proksi ulanishni tashlab yuboradi (bo'sh turishda taymayt, so'rov juda katta), xavfsizlik devori uzoq muddatli ulanishlarni tugatadi, serverning keep-alive taymayti kutilganidan qisqaroq yoki mijoz va server o'rtasida tarmoq uzilishi mavjud.
Qanday tuzatish mumkin
So'rovni qayta urinib ko'ring — vaqtinchalik tarmoq muammolari eng keng tarqalgan sababdir. Aniq muvaffaqiyatsizlik nuqtasini ko'rish uchun verbose rejimdan foydalaning: curl -v URL. Agar xato katta yuklashlar vaqtida yuz bersa, bo'lakli uzatishni sinab ko'ring: curl -H "Transfer-Encoding: chunked" URL. RPC failed; curl 56 ko'rsatuvchi Git operatsiyalari uchun buferni oshiring: git config http.postBuffer 524288000.
$ curl https://api.example.com/large-download

Xato 60: SSL sertifikat muammosi

Bu nimani anglatadi
Terminalingizda curl: (60) SSL certificate problem: unable to get local issuer certificate ko'rsatiladi. curl serverning SSL sertifikatini CA (Sertifikat markazi) to'plami bo'yicha tekshira olmadi. TLS qo'l siqishi protokol darajasida yakunlandi, lekin sertifikatni tasdiqlash muvaffaqiyatsiz bo'ldi.
Sabablari
Eng keng tarqalgan sabablar: server o'zi imzolagan sertifikat ishlatayotgani, sertifikat muddati o'tgani, sertifikat zanjiri to'liq emas (oraliq sertifikatlar yetishmayapti), curl'ning CA to'plami eskirgani (eski tizimlar yoki Docker konteynerlarida ko'p uchraydi) yoki sertifikatning Common Name / SAN so'ralgan xost nomi bilan mos kelmayapti.
Qanday tuzatish mumkin
CA to'plamini yangilang: curl --cacert /path/to/cacert.pem URL. Yangilangan to'plamni https://curl.se/ca/cacert.pem dan yuklab oling. Diagnostika uchun: openssl s_client -connect api.example.com:443 -showcerts. Ishlab chiqish muhitida o'zi imzolagan sertifikatlar uchun curl -k URL ishlating (ishlab chiqarishda hech qachon — bu barcha sertifikat tekshiruvini o'chiradi). Docker'da ca-certificates paketini o'rnating.
$ curl https://self-signed.example.com/api

Boshqa xato kodlari

0CURLE_OK

Muvaffaqiyat. Operatsiya hech qanday xatosiz yakunlandi.

1CURLE_UNSUPPORTED_PROTOCOL

Qo'llab-quvvatlanmaydigan protokol. URL curl qurish vaqtida qo'llab-quvvatlanmagan protokoldan foydalanmoqda.

3CURLE_URL_MALFORMAT

Noto'g'ri URL. URL sintaksisi noto'g'ri yoki tahlil qilib bo'lmadi.

5CURLE_COULDNT_RESOLVE_PROXY

Proksi-serverni hal qilib bo'lmadi. Ko'rsatilgan proksi xost nomi hal qilinmadi.

18CURLE_PARTIAL_FILE

Qisman fayl. Uzatish to'xtatildi va faylning faqat bir qismi qabul qilindi.

23CURLE_WRITE_ERROR

Yozish xatosi. curl qabul qilingan ma'lumotlarni diskka yoza olmadi (ruxsat rad etildi yoki disk to'la).

37CURLE_FILE_COULDNT_READ_FILE

Faylni o'qib bo'lmadi. So'rovda ko'rsatilgan mahalliy faylni ochib yoki o'qib bo'lmadi.

52CURLE_GOT_NOTHING

Serverdan bo'sh javob. Server hech qanday ma'lumot yubormasdan ulanishni yopdi.

77CURLE_SSL_CACERT_BADFILE

SSL CA sertifikat muammosi. Ko'rsatilgan CA sertifikat faylini o'qib yoki tahlil qilib bo'lmadi.

92CURLE_HTTP2_STREAM

HTTP/2 oqim xatosi. Uzatish vaqtida HTTP/2 protokol darajasida oqim xatosi yuz berdi.

curl xatolarini qanday tuzatish

curl muvaffaqiyatsiz bo'lganda, bu uchta bayroq asosiy sababni tezda aniqlashga yordam beradi — DNS hal qilishdan SSL qo'l siqishgacha va javob yuklamasigacha.

  1. 1

    Verbose chiqishni yoqish

    To'liq so'rov/javob siklini ko'rish uchun curl -v URL ni ishga tushiring: DNS hal qilish, TCP ulanish, TLS qo'l siqishi, yuborilgan so'rov sarlavhalari va qabul qilingan javob sarlavhalari. Bu eng foydali nosozliklarni aniqlash bayrog'idir.

  2. 2

    HTTP holat kodini tekshirish

    Javob tanasisiz faqat HTTP holat kodini (200, 404, 500 va h.k.) olish uchun curl -o /dev/null -s -w "%{http_code}" URL ni ishga tushiring. Tezkor holat tekshiruvlari va skriptlar uchun foydali.

  3. 3

    Xatolarni jimgina ko'rsatish

    Rivojlanish panelini yashirish (-s) lekin xatolarni ko'rsatish (-S) uchun curl -sS URL ni ishga tushiring. Toza chiqish kerak bo'lgan, lekin muvaffaqiyatsizliklarni ushlash kerak bo'lgan skriptlar uchun mukammal.

Ko'p beriladigan savollar

curl chiqish kodini qanday tekshirish mumkin?

curl buyrug'ini ishga tushirgandan so'ng, chiqish kodi shellning maxsus o'zgaruvchisida saqlanadi. Bash/Zsh'da curl buyrug'idan darhol keyin echo $? ni ishga tushiring. PowerShell'da $LASTEXITCODE dan foydalaning. Skriptlarda uni shart bilan tekshirishingiz mumkin: if curl -sf URL; then echo "OK"; else echo "Failed with code $?"; fi. 0 chiqish kodi muvaffaqiyatni bildiradi; boshqa har qanday raqam xatoni ko'rsatadi. HTTP holat kodini va curl chiqish kodini bir vaqtda ko'rish uchun birlashtiring: curl -w "%{http_code}" -o /dev/null -s URL; echo "Exit: $?". E'tibor bering, curl'ning chiqish kodi HTTP holat kodidan farq qiladi — --fail bayrog'i ishlatilmasa, curl HTTP 404 da ham 0 qaytaradi.

curl xato 28 (operatsiya taymayt bo'ldi) ni qanday tuzatish mumkin?

Xato 28 so'rov maksimal ruxsat etilgan vaqtdan oshganini bildiradi. Birinchi navbatda taymaytni oshiring: curl --connect-timeout 30 --max-time 120 URL. --connect-timeout TCP ulanish bosqichini cheklaydi, --max-time esa butun operatsiyani cheklaydi. Keyin curl -v URL bilan to'siqni aniqlang — verbose chiqish curl aniq qayerda to'xtab qolganini ko'rsatadi (DNS, ulanish, TLS yoki uzatish). Keng tarqalgan yechimlar: tarmoq ulanishi va DNS sozlamalarini tekshiring, server javob berayotganini tekshiring (ping va telnet), proksilarni --noproxy '*' bilan chetlab o'ting va katta yuklab olishlar uchun avtomatik qayta urinishlar uchun --retry 3 --retry-delay 5 qo'shing.

curl SSL sertifikat xatolarini (xato 60) qanday tuzatish mumkin?

Xato 60 curl serverning SSL sertifikatini tekshira olmaganini bildiradi. Yechim sababga bog'liq. Eskirgan CA to'plami uchun: yangisini https://curl.se/ca/cacert.pem dan yuklab oling va curl --cacert /path/to/cacert.pem URL dan foydalaning. Docker konteynerlari uchun: ca-certificates paketini o'rnating (apt-get install ca-certificates). Ishlab chiqish muhitida o'zi imzolagan sertifikatlar uchun: tekshiruvni o'tkazib yuborish uchun curl -k URL dan foydalaning — lekin ishlab chiqarishda hech qachon -k ishlatmang, chunki u barcha sertifikat tekshiruvini o'chiradi. Diagnostika uchun: sertifikat zanjirini ko'rish uchun openssl s_client -connect host:443 -showcerts ni ishga tushiring. Agar sertifikat muddati o'tgan yoki xost nomi mos kelmasa, muammo server tomonida.

curl xato 7 (ulanish muvaffaqiyatsiz) nimani anglatadi?

Xato 7 curl xost nomini IP manzilga aylantirganini, lekin TCP ulanishni o'rnata olmaganini bildiradi. Server faol ravishda ulanishni rad etdi yoki ulanish urinishi tarmoq darajasida taymayt bo'ldi. Keng tarqalgan sabablar: maqsadli xostda xizmat ishlamayapti (systemctl status yoki docker ps bilan tekshiring), xavfsizlik devori portni bloklayapti (telnet host port bilan sinab ko'ring), noto'g'ri port ishlatilmoqda (masalan, 443 o'rniga 80 yoki ishlab chiqish serveri uchun 8080) yoki serverning tinglash navbati to'lgan yuqori yuk ostida. Nosozliklarni aniqlash uchun: curl -v URL dan foydalaning va chiqishda "Connected to" yoki "Connection refused" ni qidiring.