2011-11-22 26 views
68

मैं कोड के इस सरल टुकड़ा लिखा है:curl_exec() हमेशा रिटर्न झूठी

$ch = curl_init(); 

//Set options 
curl_setopt($ch, CURLOPT_URL, "http://www.php.net"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$website_content = curl_exec ($ch); 

मेरे मामले $website_content में false के रूप में आता है। क्या कोई सुझाव दे सकता है कि कुछ गलत हो सकता है?

+3

त्रुटि विवरण के लिए [curl_error() '] (http://php.net/manual/en/function.curl-error.php) से परामर्श लें और इन्हें यहां पोस्ट करें, कृपया। –

+0

@LinusKleen यदि आप curl_error() को एक उत्तर के रूप में पोस्ट करते हैं तो मैं इसे ऊपर उठाऊंगा क्योंकि इससे मुझे यह देखने की अनुमति मिली कि मेरी समस्या क्या थी। –

+0

समस्या वास्तव में क्या थी? 'Curl_error()' में क्या त्रुटि आई? – showdev

उत्तर

167

त्रुटि जांचने और संभालने में प्रोग्रामर का मित्र है। Curl कार्यों को प्रारंभ करने और निष्पादित करने के वापसी मूल्यों की जांच करें। curl_error() और curl_errno() विफलता के मामले में आगे की जानकारी में शामिल होंगे:

try { 
    $ch = curl_init(); 

    if (FALSE === $ch) 
     throw new Exception('failed to initialize'); 

    curl_setopt($ch, CURLOPT_URL, 'http://example.com/'); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt(/* ... */); 

    $content = curl_exec($ch); 

    if (FALSE === $content) 
     throw new Exception(curl_error($ch), curl_errno($ch)); 

    // ...process $content now 
} catch(Exception $e) { 

    trigger_error(sprintf(
     'Curl failed with error #%d: %s', 
     $e->getCode(), $e->getMessage()), 
     E_USER_ERROR); 

} 
+7

+1: 'curl_exec' पर PHP में कर्ल के लिए सरल और सीधी परेशानी-शूटिंग FALSE वापसी। - [PHP उदाहरण में कर्ल वर्बोज़ मोड] (http://stackoverflow.com/a/9571305/367456) – hakre

+0

हाँ। वास्तव में लंबे समय से यह पता लगाया था। हालांकि उत्तर के लिए धन्यवाद :) – Adithya

+6

कोई समस्या नहीं है। इसके लिए एक रिवाइवल बैज मिला :-) स्वीकार करने के लिए धन्यवाद। –

0

यह कल मुझे क्या हुआ और मेरे मामले में, क्योंकि था मैं एक पीडीएफ मैनुअल पीछा कर रहा था एक API के साथ संवाद करने के लिए कुछ मॉड्यूल विकसित करने के लिए और लिंक की प्रतिलिपि, जबकि मैनुअल से सीधे, कुछ अजीब कारणों से, कॉपी किए गए लिंक से hyphen एक अलग एन्कोडिंग में था और इसलिए curl_exec() हमेशा false लौटा रहा था क्योंकि यह सर्वर से संवाद करने में असमर्थ था।

यह अंततः bellow अक्षरों में diference को समझने के लिए मुझे कुछ घंटे लग गए:

https://www.e‐example.com/api 
https://www.e-example.com/api 

हर बार जब मैं एक ब्राउज़र यह https://www.xn--eexample-0m3d.com/api की तरह कुछ करने के लिए परिवर्तित से सीधे लिंक का उपयोग करने की कोशिश की।

यह है कि वे बराबर हैं आप के लिए लग सकता है, लेकिन यदि आप hyphenshere की एन्कोडिंग जाँच आप देखेंगे कि पहले hyphen एक यूनिकोड वर्ण U+2010 है और अन्य एक U+002D है।

उम्मीद है कि यह किसी की मदद करेगा।

संबंधित मुद्दे