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
Muvaffaqiyat. Operatsiya hech qanday xatosiz yakunlandi.
Qo'llab-quvvatlanmaydigan protokol. URL curl qurish vaqtida qo'llab-quvvatlanmagan protokoldan foydalanmoqda.
Noto'g'ri URL. URL sintaksisi noto'g'ri yoki tahlil qilib bo'lmadi.
Proksi-serverni hal qilib bo'lmadi. Ko'rsatilgan proksi xost nomi hal qilinmadi.
DNS so'rovi muvaffaqiyatsiz — xost nomi IP manzilga aylantirilmadi.
TCP ulanishi muvaffaqiyatsiz — server ishlamayapti, port bloklangan yoki xavfsizlik devori ulanishlarni rad etmoqda.
Qisman fayl. Uzatish to'xtatildi va faylning faqat bir qismi qabul qilindi.
Server HTTP xato qaytardi (4xx/5xx) va --fail bayrog'i ishlatilgan.
Yozish xatosi. curl qabul qilingan ma'lumotlarni diskka yoza olmadi (ruxsat rad etildi yoki disk to'la).
Operatsiya maksimal ruxsat etilgan vaqtdan oshdi (DNS, ulanish yoki uzatish).
SSL/TLS qo'l siqishi muvaffaqiyatsiz — protokol versiyasi yoki shifrlash to'plami nomuvofiqligi.
Faylni o'qib bo'lmadi. So'rovda ko'rsatilgan mahalliy faylni ochib yoki o'qib bo'lmadi.
Serverdan bo'sh javob. Server hech qanday ma'lumot yubormasdan ulanishni yopdi.
Ulanish tiklandi — server ma'lumot uzatish vaqtida ulanishni tashlab yubordi.
SSL sertifikat tekshiruvi muvaffaqiyatsiz — muddati o'tgan, o'zi imzolagan yoki CA to'plami eskirgan.
SSL CA sertifikat muammosi. Ko'rsatilgan CA sertifikat faylini o'qib yoki tahlil qilib bo'lmadi.
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 hostko'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.como'rnigacurl 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.comyokidig 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.confyoki tarmoq sozlamalarini tekshiring. Korporativ VPN orqasida bo'lsangiz, ichki DNS xostni hal qila olishini tekshiring.
$ curl https://api.exmple.com/usersXato 7: Ulanish muvaffaqiyatsiz
- Bu nimani anglatadi
- Terminalingizda
curl: (7) Failed to connect to host port: Connection refusedko'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.comvatelnet 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/apiXato 22: HTTP xato qaytardi
- Bu nimani anglatadi
- Terminalingizda
curl: (22) The requested URL returned errorko'rsatiladi. Server HTTP xato holat kodini (4xx yoki 5xx) qaytardi va curl-fyoki--failbilan 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
--failishlatilganda.--failsiz 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
--failsiz 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/nonexistentXato 28: Operatsiya taymayt bo'ldi
- Bu nimani anglatadi
- Terminalingizda
curl: (28) Operation timed outyokicurl: (28) Connection timed outko'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-timeoutyoki--max-timebilan 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.comvatraceroute api.example.com. Proksi orqasida bo'lsangiz, uni chetlab o'tishga harakat qiling:curl --noproxy '*' URL. Katta fayllarni uzatish uchun--retry 3va--retry-delay 5dan foydalanishni o'ylab ko'ring.
$ curl --connect-timeout 5 https://slow-api.example.com/dataXato 35: SSL ulanish xatosi
- Bu nimani anglatadi
- Terminalingizda
curl: (35) SSL connect errorko'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 URLyokicurl --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/apiXato 56: Qabul qilish muvaffaqiyatsiz — Ulanish tiklandi
- Bu nimani anglatadi
- Terminalingizda
curl: (56) Recv failure: Connection reset by peerko'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 56ko'rsatuvchi Git operatsiyalari uchun buferni oshiring:git config http.postBuffer 524288000.
$ curl https://api.example.com/large-downloadXato 60: SSL sertifikat muammosi
- Bu nimani anglatadi
- Terminalingizda
curl: (60) SSL certificate problem: unable to get local issuer certificateko'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 uchuncurl -k URLishlating (ishlab chiqarishda hech qachon — bu barcha sertifikat tekshiruvini o'chiradi). Docker'daca-certificatespaketini o'rnating.
$ curl https://self-signed.example.com/apiBoshqa xato kodlari
Muvaffaqiyat. Operatsiya hech qanday xatosiz yakunlandi.
Qo'llab-quvvatlanmaydigan protokol. URL curl qurish vaqtida qo'llab-quvvatlanmagan protokoldan foydalanmoqda.
Noto'g'ri URL. URL sintaksisi noto'g'ri yoki tahlil qilib bo'lmadi.
Proksi-serverni hal qilib bo'lmadi. Ko'rsatilgan proksi xost nomi hal qilinmadi.
Qisman fayl. Uzatish to'xtatildi va faylning faqat bir qismi qabul qilindi.
Yozish xatosi. curl qabul qilingan ma'lumotlarni diskka yoza olmadi (ruxsat rad etildi yoki disk to'la).
Faylni o'qib bo'lmadi. So'rovda ko'rsatilgan mahalliy faylni ochib yoki o'qib bo'lmadi.
Serverdan bo'sh javob. Server hech qanday ma'lumot yubormasdan ulanishni yopdi.
SSL CA sertifikat muammosi. Ko'rsatilgan CA sertifikat faylini o'qib yoki tahlil qilib bo'lmadi.
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
Verbose chiqishni yoqish
To'liq so'rov/javob siklini ko'rish uchun
curl -v URLni 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
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}" URLni ishga tushiring. Tezkor holat tekshiruvlari va skriptlar uchun foydali. - 3
Xatolarni jimgina ko'rsatish
Rivojlanish panelini yashirish (
-s) lekin xatolarni ko'rsatish (-S) uchuncurl -sS URLni 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.