curl त्रुटि कोड: संपूर्ण संदर्भ
जब कोई curl कमांड विफल होती है, तो यह एक संख्यात्मक एग्ज़िट कोड (जिसे curl error code भी कहा जाता है) लौटाती है जो त्रुटि के प्रकार की पहचान करता है। आप curl कमांड के तुरंत बाद echo $? चलाकर (या PowerShell में $LASTEXITCODE) curl एग्ज़िट कोड की जाँच कर सकते हैं। एग्ज़िट कोड 0 का अर्थ सफलता है; कोई भी अन्य संख्या एक विशिष्ट समस्या को इंगित करती है — DNS रिज़ॉल्यूशन विफलताओं और कनेक्शन टाइमआउट से लेकर SSL प्रमाणपत्र समस्याओं तक। यह पृष्ठ सबसे सामान्य curl त्रुटि कोड का एक संपूर्ण संदर्भ है जिसमें व्याख्याएँ, कारण और समाधान शामिल हैं। यदि आप अपने कोड में curl कमांड के साथ काम कर रहे हैं, तो उन्हें अपनी पसंदीदा प्रोग्रामिंग भाषा में बदलने के लिए curl2code में पेस्ट करें।
त्वरित संदर्भ तालिका
सफल। ऑपरेशन बिना किसी त्रुटि के पूरा हुआ।
असमर्थित प्रोटोकॉल। URL एक ऐसे प्रोटोकॉल का उपयोग करता है जिसके समर्थन के साथ curl नहीं बनाया गया था।
विकृत URL। URL सिंटैक्स अमान्य है या पार्स नहीं किया जा सका।
प्रॉक्सी को रिज़ॉल्व नहीं किया जा सका। निर्दिष्ट प्रॉक्सी होस्टनाम को रिज़ॉल्व नहीं किया जा सका।
DNS लुकअप विफल — होस्टनाम को IP एड्रेस में रिज़ॉल्व नहीं किया जा सका।
TCP कनेक्शन विफल — सर्वर डाउन है, पोर्ट ब्लॉक है, या फ़ायरवॉल कनेक्शन अस्वीकार कर रहा है।
आंशिक फ़ाइल। स्थानांतरण बाधित हो गया और फ़ाइल का केवल एक भाग प्राप्त हुआ।
सर्वर ने HTTP त्रुटि (4xx/5xx) लौटाई और --fail फ़्लैग का उपयोग किया गया था।
लिखने में त्रुटि। curl प्राप्त डेटा को डिस्क पर लिखने में विफल रहा (अनुमति अस्वीकृत या डिस्क भरी हुई)।
ऑपरेशन अधिकतम अनुमत समय (DNS, कनेक्ट, या ट्रांसफ़र) से अधिक हो गया।
SSL/TLS हैंडशेक विफल — प्रोटोकॉल संस्करण या cipher suite बेमेल।
फ़ाइल पढ़ नहीं सका। अनुरोध में संदर्भित एक स्थानीय फ़ाइल खोली या पढ़ी नहीं जा सकी।
सर्वर से खाली प्रतिक्रिया। सर्वर ने कोई भी डेटा भेजे बिना कनेक्शन बंद कर दिया।
कनेक्शन रीसेट हो गया — सर्वर ने डेटा ट्रांसफ़र के दौरान कनेक्शन ड्रॉप कर दिया।
SSL प्रमाणपत्र सत्यापन विफल — एक्सपायर्ड, self-signed, या CA बंडल पुराना है।
SSL CA प्रमाणपत्र समस्या। निर्दिष्ट CA प्रमाणपत्र फ़ाइल को पढ़ा या पार्स नहीं किया जा सका।
HTTP/2 स्ट्रीम त्रुटि। ट्रांसफ़र के दौरान HTTP/2 प्रोटोकॉल-स्तरीय स्ट्रीम त्रुटि हुई।
त्रुटि 6: होस्ट को रिज़ॉल्व नहीं किया जा सका
- इसका अर्थ
- आपके टर्मिनल में
curl: (6) Could not resolve hostदिखता है। curl होस्टनाम को IP एड्रेस में रिज़ॉल्व नहीं कर सका — कोई भी कनेक्शन प्रयास होने से पहले DNS लुकअप विफल हो गया। - कारण
- सबसे सामान्य कारण हैं: होस्टनाम में टाइपो (जैसे,
curl https://apiexample.comकी जगहapi.example.com), DNS सर्वर समस्याएँ (आपका कॉन्फ़िगर किया गया DNS डाउन या अगम्य है), कोई नेटवर्क कनेक्शन नहीं (Wi-Fi डिस्कनेक्ट, VPN कनेक्ट नहीं), या डोमेन वास्तव में मौजूद नहीं है। - कैसे ठीक करें
- सबसे पहले, सत्यापित करें कि URL सही है। फिर सीधे DNS रिज़ॉल्यूशन का परीक्षण करें:
nslookup api.example.comयाdig api.example.com। यदि DNS विफल होता है, तो एक अलग DNS सर्वर आज़माएँ:curl --dns-servers 8.8.8.8 https://api.example.com। अपना/etc/resolv.confया नेटवर्क सेटिंग्स जाँचें। यदि कॉर्पोरेट VPN के पीछे हैं, तो सुनिश्चित करें कि आंतरिक DNS होस्ट को रिज़ॉल्व कर सकता है।
$ curl https://api.exmple.com/usersत्रुटि 7: कनेक्ट करने में विफल
- इसका अर्थ
- आपके टर्मिनल में
curl: (7) Failed to connect to host port: Connection refusedदिखता है। curl ने होस्टनाम को रिज़ॉल्व कर लिया लेकिन सर्वर से TCP कनेक्शन स्थापित नहीं कर सका — कनेक्शन सक्रिय रूप से अस्वीकृत किया गया या TCP स्तर पर टाइमआउट हो गया। - कारण
- सामान्य कारणों में शामिल हैं: सर्वर डाउन है या नहीं चल रहा, फ़ायरवॉल पोर्ट को ब्लॉक कर रहा है (स्थानीय और सर्वर-साइड दोनों फ़ायरवॉल जाँचें), पोर्ट गलत है (जैसे, सर्विस 8080 पर चलती है लेकिन आप 443 से कनेक्ट कर रहे हैं), या सर्वर का listen backlog भारी लोड में भरा हुआ है।
- कैसे ठीक करें
- सत्यापित करें कि सर्वर चल रहा है:
ping api.example.comऔरtelnet api.example.com 443। जाँचें कि सही पोर्ट खुला है:nmap -p 443 api.example.com। परीक्षण के लिए स्थानीय फ़ायरवॉल को अस्थायी रूप से अक्षम करें। यदि Docker का उपयोग कर रहे हैं, तो सुनिश्चित करें कि कंटेनर पोर्ट प्रकाशित है। verbose मोड के साथ आज़माएँ:curl -v https://api.example.comयह देखने के लिए कि कनेक्शन कहाँ विफल होता है।
$ curl https://localhost:8080/apiत्रुटि 22: HTTP ने त्रुटि लौटाई
- इसका अर्थ
- आपके टर्मिनल में
curl: (22) The requested URL returned errorदिखता है। सर्वर ने HTTP त्रुटि स्टेटस कोड (4xx या 5xx) लौटाया और curl को-fया--failके साथ इनवोक किया गया था, जो curl को HTTP त्रुटियों को विफलता के रूप में मानने के लिए कहता है। - कारण
- यह त्रुटि HTTP स्टेटस कोड जैसे 400 (Bad Request), 401 (Unauthorized), 403 (Forbidden), 404 (Not Found), या 500 (Internal Server Error) द्वारा ट्रिगर होती है — लेकिन केवल जब
--failका उपयोग किया जाता है।--failके बिना, curl HTTP त्रुटियों पर भी कोड 0 के साथ बाहर निकलता है। सामान्य कारण: गलत URL, प्रमाणीकरण गायब, अपर्याप्त अनुमतियाँ, या सर्वर-साइड बग। - कैसे ठीक करें
- पूर्ण प्रतिक्रिया बॉडी देखने के लिए
--failके बिना curl चलाएँ — इसमें अक्सर वास्तविक त्रुटि संदेश होता है। HTTP स्टेटस कोड जाँचें:curl -w "%{http_code}" -o /dev/null -s URL। 401/403 के लिए: अपना auth टोकन या API कुंजी सत्यापित करें। 404 के लिए: URL पथ दोबारा जाँचें। 500 के लिए: समस्या सर्वर-साइड है।
$ curl --fail https://api.example.com/nonexistentत्रुटि 28: ऑपरेशन टाइमआउट हो गया
- इसका अर्थ
- आपके टर्मिनल में
curl: (28) Operation timed outयाcurl: (28) Connection timed outदिखता है। ऑपरेशन अनुमत समय से अधिक समय ले गया। यह सबसे सामान्य curl त्रुटि है — यह DNS रिज़ॉल्यूशन, TCP कनेक्शन, SSL हैंडशेक, या डेटा ट्रांसफ़र के दौरान हो सकती है। - कारण
- सामान्य कारणों में शामिल हैं: धीमा या ओवरलोडेड सर्वर जो समय पर प्रतिक्रिया नहीं दे रहा, नेटवर्क कंजेशन या पैकेट लॉस, फ़ायरवॉल चुपचाप पैकेट ड्रॉप कर रहा है (कोई अस्वीकृति नहीं, बस मौन),
--connect-timeoutया--max-timeके साथ सेट किए गए अत्यधिक सख्त टाइमआउट मान, या देरी का कारण बनने वाला प्रॉक्सी गलत कॉन्फ़िगरेशन। - कैसे ठीक करें
- टाइमआउट बढ़ाएँ:
curl --connect-timeout 30 --max-time 120 URL। verbose मोड का उपयोग करें यह देखने के लिए कि कहाँ अटकता है:curl -v URL। नेटवर्क लेटेंसी का परीक्षण करें:ping api.example.comऔरtraceroute api.example.com। यदि प्रॉक्सी के पीछे हैं, तो इसे बायपास करने का प्रयास करें:curl --noproxy '*' URL। बड़े फ़ाइल ट्रांसफ़र के लिए,--retry 3के साथ--retry-delay 5का उपयोग करने पर विचार करें।
$ curl --connect-timeout 5 https://slow-api.example.com/dataत्रुटि 35: SSL कनेक्ट त्रुटि
- इसका अर्थ
- आपके टर्मिनल में
curl: (35) SSL connect errorदिखता है। SSL/TLS हैंडशेक विफल हो गया — curl सर्वर के साथ एक सुरक्षित कनेक्शन स्थापित नहीं कर सका। - कारण
- सामान्य कारण: TLS संस्करण बेमेल (सर्वर को TLS 1.3 चाहिए लेकिन आपका curl केवल TLS 1.2 तक समर्थन करता है), cipher suite असंगतता, सर्वर SSL गलत कॉन्फ़िगरेशन (हैंडशेक के दौरान एक्सपायर्ड सर्टिफ़िकेट प्रस्तुत, अधूरी चेन), सर्वर दिए गए पोर्ट पर वास्तव में HTTPS का समर्थन नहीं करता, या कोई प्रॉक्सी या फ़ायरवॉल SSL कनेक्शन को इंटरसेप्ट कर रहा है (MITM)।
- कैसे ठीक करें
- एक विशिष्ट TLS संस्करण को बल दें:
curl --tlsv1.2 URLयाcurl --tlsv1.3 URL। जाँचें कि सर्वर क्या समर्थन करता है:openssl s_client -connect api.example.com:443। curl और OpenSSL को नवीनतम संस्करणों में अपडेट करें। यदि सर्वर self-signed सर्टिफ़िकेट का उपयोग करता है, तो यह आमतौर पर error 60 होता है — error 35 आमतौर पर प्रोटोकॉल-स्तरीय हैंडशेक विफलता को इंगित करता है।
$ curl https://legacy-server.example.com/apiत्रुटि 56: प्राप्ति विफलता — कनेक्शन रीसेट हो गया
- इसका अर्थ
- आपके टर्मिनल में
curl: (56) Recv failure: Connection reset by peerदिखता है। कनेक्शन सफलतापूर्वक स्थापित हो गया था, लेकिन डेटा प्राप्ति विफल हो गई — सर्वर ने ट्रांसफ़र के दौरान अप्रत्याशित रूप से कनेक्शन बंद या रीसेट कर दिया। - कारण
- यह अक्सर तब होता है जब: सर्वर क्रैश या रीस्टार्ट ट्रांसफ़र के बीच में होता है, लोड बैलेंसर या प्रॉक्सी कनेक्शन ड्रॉप करता है (idle timeout, अनुरोध बहुत बड़ा), फ़ायरवॉल लंबे समय तक चलने वाले कनेक्शन को समाप्त करता है, सर्वर का keep-alive टाइमआउट अपेक्षा से छोटा है, या क्लाइंट और सर्वर के बीच नेटवर्क में व्यवधान है।
- कैसे ठीक करें
- अनुरोध को फिर से आज़माएँ — क्षणिक नेटवर्क समस्याएँ सबसे सामान्य कारण हैं। verbose मोड का उपयोग करें:
curl -v URLविफलता के सटीक बिंदु को देखने के लिए। यदि बड़े अपलोड के दौरान त्रुटि होती है, तो chunked transfer आज़माएँ:curl -H "Transfer-Encoding: chunked" URL।RPC failed; curl 56दिखाने वाले Git ऑपरेशन के लिए, बफ़र बढ़ाएँ:git config http.postBuffer 524288000।
$ curl https://api.example.com/large-downloadत्रुटि 60: SSL प्रमाणपत्र समस्या
- इसका अर्थ
- आपके टर्मिनल में
curl: (60) SSL certificate problem: unable to get local issuer certificateदिखता है। curl सर्वर के SSL प्रमाणपत्र को अपने CA (Certificate Authority) बंडल के विरुद्ध सत्यापित नहीं कर सका। TLS हैंडशेक प्रोटोकॉल स्तर पर पूरा हुआ, लेकिन प्रमाणपत्र सत्यापन विफल हो गया। - कारण
- सबसे सामान्य कारण: सर्वर self-signed प्रमाणपत्र का उपयोग करता है, प्रमाणपत्र एक्सपायर हो गया है, प्रमाणपत्र चेन अधूरी है (intermediate प्रमाणपत्र गायब), curl का CA बंडल पुराना है (पुरानी प्रणालियों या Docker कंटेनरों में सामान्य), या प्रमाणपत्र का Common Name / SAN अनुरोधित होस्टनाम से मेल नहीं खाता।
- कैसे ठीक करें
- CA बंडल अपडेट करें:
curl --cacert /path/to/cacert.pem URL। https://curl.se/ca/cacert.pem से एक अपडेटेड बंडल डाउनलोड करें। निदान के लिए:openssl s_client -connect api.example.com:443 -showcerts। डेवलपमेंट में self-signed सर्टिफ़िकेट के लिए,curl -k URLका उपयोग करें (कभी भी प्रोडक्शन में नहीं — यह सभी प्रमाणपत्र सत्यापन को अक्षम कर देता है)। Docker में,ca-certificatesपैकेज इंस्टॉल करें।
$ curl https://self-signed.example.com/apiअन्य त्रुटि कोड
सफल। ऑपरेशन बिना किसी त्रुटि के पूरा हुआ।
असमर्थित प्रोटोकॉल। URL एक ऐसे प्रोटोकॉल का उपयोग करता है जिसके समर्थन के साथ curl नहीं बनाया गया था।
विकृत URL। URL सिंटैक्स अमान्य है या पार्स नहीं किया जा सका।
प्रॉक्सी को रिज़ॉल्व नहीं किया जा सका। निर्दिष्ट प्रॉक्सी होस्टनाम को रिज़ॉल्व नहीं किया जा सका।
आंशिक फ़ाइल। स्थानांतरण बाधित हो गया और फ़ाइल का केवल एक भाग प्राप्त हुआ।
लिखने में त्रुटि। curl प्राप्त डेटा को डिस्क पर लिखने में विफल रहा (अनुमति अस्वीकृत या डिस्क भरी हुई)।
फ़ाइल पढ़ नहीं सका। अनुरोध में संदर्भित एक स्थानीय फ़ाइल खोली या पढ़ी नहीं जा सकी।
सर्वर से खाली प्रतिक्रिया। सर्वर ने कोई भी डेटा भेजे बिना कनेक्शन बंद कर दिया।
SSL CA प्रमाणपत्र समस्या। निर्दिष्ट CA प्रमाणपत्र फ़ाइल को पढ़ा या पार्स नहीं किया जा सका।
HTTP/2 स्ट्रीम त्रुटि। ट्रांसफ़र के दौरान HTTP/2 प्रोटोकॉल-स्तरीय स्ट्रीम त्रुटि हुई।
curl त्रुटियों को कैसे डीबग करें
जब curl विफल होता है, तो ये तीन फ़्लैग आपको मूल कारण की शीघ्र पहचान करने में मदद करते हैं — DNS रिज़ॉल्यूशन से SSL हैंडशेक से प्रतिक्रिया पेलोड तक।
- 1
verbose आउटपुट सक्षम करें
पूरा अनुरोध/प्रतिक्रिया चक्र देखने के लिए
curl -v URLचलाएँ: DNS रिज़ॉल्यूशन, TCP कनेक्शन, TLS हैंडशेक, भेजे गए अनुरोध हेडर, और प्राप्त प्रतिक्रिया हेडर। यह सबसे उपयोगी डीबगिंग फ़्लैग है। - 2
HTTP स्टेटस कोड जाँचें
प्रतिक्रिया बॉडी के बिना केवल HTTP स्टेटस कोड (200, 404, 500, आदि) प्राप्त करने के लिए
curl -o /dev/null -s -w "%{http_code}" URLचलाएँ। त्वरित हेल्थ चेक और स्क्रिप्टिंग के लिए उपयोगी। - 3
त्रुटियों को चुपचाप दिखाएँ
प्रोग्रेस बार (
-s) को दबाने के लिए लेकिन फिर भी त्रुटियाँ (-S) दिखाने के लिएcurl -sS URLचलाएँ। उन स्क्रिप्ट के लिए उत्तम जहाँ आपको साफ़ आउटपुट चाहिए लेकिन विफलताओं को पकड़ना भी ज़रूरी है।
अक्सर पूछे जाने वाले प्रश्न
curl एग्ज़िट कोड कैसे जाँचें?
curl कमांड चलाने के बाद, एग्ज़िट कोड शेल के विशेष चर में संग्रहीत होता है। Bash/Zsh में, curl कमांड के तुरंत बाद echo $? चलाएँ। PowerShell में, $LASTEXITCODE का उपयोग करें। स्क्रिप्ट में, आप इसे एक शर्त के साथ जाँच सकते हैं: if curl -sf URL; then echo "OK"; else echo "Failed with code $?"; fi। एग्ज़िट कोड 0 का अर्थ सफलता है; कोई भी अन्य संख्या एक त्रुटि इंगित करती है। HTTP स्टेटस कोड और curl एग्ज़िट कोड दोनों देखने के लिए, संयोजित करें: curl -w "%{http_code}" -o /dev/null -s URL; echo "Exit: $?"। ध्यान दें कि curl का एग्ज़िट कोड HTTP स्टेटस कोड से अलग है — curl HTTP 404 पर भी 0 लौटाता है जब तक कि आप --fail फ़्लैग का उपयोग नहीं करते।
curl error 28 (ऑपरेशन टाइमआउट) कैसे ठीक करें?
Error 28 का अर्थ है कि अनुरोध अधिकतम अनुमत समय से अधिक हो गया। सबसे पहले, टाइमआउट बढ़ाएँ: curl --connect-timeout 30 --max-time 120 URL। --connect-timeout TCP कनेक्शन चरण को सीमित करता है, जबकि --max-time पूरे ऑपरेशन को सीमित करता है। इसके बाद, curl -v URL के साथ बॉटलनेक का निदान करें — verbose आउटपुट सटीक रूप से दिखाता है कि curl कहाँ अटकता है (DNS, कनेक्ट, TLS, या ट्रांसफ़र)। सामान्य समाधान: अपना नेटवर्क कनेक्शन और DNS सेटिंग्स जाँचें, सत्यापित करें कि सर्वर प्रतिक्रिया दे रहा है (ping और telnet), --noproxy '*' के साथ प्रॉक्सी को बायपास करें, और बड़े डाउनलोड के लिए स्वचालित पुनः प्रयास हेतु --retry 3 --retry-delay 5 जोड़ें।
curl SSL प्रमाणपत्र त्रुटियाँ (error 60) कैसे ठीक करें?
Error 60 का अर्थ है कि curl सर्वर के SSL प्रमाणपत्र को सत्यापित नहीं कर सकता। समाधान कारण पर निर्भर करता है। पुराने CA बंडल के लिए: https://curl.se/ca/cacert.pem से एक ताज़ा बंडल डाउनलोड करें और curl --cacert /path/to/cacert.pem URL का उपयोग करें। Docker कंटेनरों के लिए: ca-certificates पैकेज इंस्टॉल करें (apt-get install ca-certificates)। डेवलपमेंट में self-signed प्रमाणपत्रों के लिए: सत्यापन छोड़ने के लिए curl -k URL का उपयोग करें — लेकिन कभी भी प्रोडक्शन में -k का उपयोग न करें क्योंकि यह सभी प्रमाणपत्र जाँच को अक्षम कर देता है। निदान के लिए: प्रमाणपत्र चेन का निरीक्षण करने के लिए openssl s_client -connect host:443 -showcerts चलाएँ। यदि प्रमाणपत्र एक्सपायर हो गया है या होस्टनाम मेल नहीं खाता, तो समस्या सर्वर की तरफ़ है।
curl error 7 (कनेक्ट करने में विफल) का क्या अर्थ है?
Error 7 का अर्थ है कि curl ने होस्टनाम को IP एड्रेस में रिज़ॉल्व कर लिया लेकिन TCP कनेक्शन स्थापित नहीं कर सका। सर्वर ने सक्रिय रूप से कनेक्शन अस्वीकार किया या नेटवर्क स्तर पर कनेक्शन प्रयास टाइमआउट हो गया। सामान्य कारण: लक्ष्य होस्ट पर सेवा नहीं चल रही है (systemctl status या docker ps से जाँचें), फ़ायरवॉल पोर्ट को ब्लॉक कर रहा है (telnet host port से परीक्षण करें), आप गलत पोर्ट का उपयोग कर रहे हैं (जैसे, 443 के बजाय 80, या dev सर्वर के लिए 8080), या भारी लोड में सर्वर का listen backlog भरा हुआ है। डीबग करने के लिए: curl -v URL का उपयोग करें और आउटपुट में "Connected to" या "Connection refused" देखें।