2013-09-05 5 views
10

कॉलिंग file_get_contents() पहले https में असमर्थ:आवरण "https" file_get_contents साथ खोजने के लिए

warning: file_get_contents(): Unable to find the wrapper "https" - did you forget to enable it when you configured PHP? 

मैं इतना सवाल 10+ पढ़ा है और उन सभी के लिए कहते हैं: // url मुझे निम्न त्रुटि देना सक्षम extension=php_openssl.dll

मैं इस किया था और मैं अभी भी समस्याएं आ रही हैं ...

यह और क्या हो सकता है?

+0

हमें आपकी मदद करने के लिए शायद कुछ और जानकारी चाहिए ... मुझे लगता है कि आप एक .dll लोड करने का प्रयास कर रहे हैं, तो आप Windows चलाते हैं? क्या आप 'phpinfo()' चलाने की कोशिश कर सकते हैं और एक पंक्ति की तलाश कर सकते हैं जो पढ़ता है: 'ओपनएसएसएल समर्थन सक्षम'? शीर्षक "openssl" के तहत होना चाहिए। –

+0

आप किस यूआरएल से कनेक्ट कर रहे हैं? क्या आप https://www.namhost.com खोल सकते हैं? मुझे पता चला कि फेसबुक यूआरएल से कनेक्ट करने का प्रयास करते समय यह 400 त्रुटि को थकाता है क्योंकि पैरामीटर सही नहीं हैं, जो मेरे आईपी पते को सेटिंग्स में सही ढंग से सेट नहीं किया गया है। अर्थात। मैं एचटीटीपीएस लिंक तक पहुंच सकता हूं, सिर्फ फेसबुक नहीं। – coderama

+1

देखें http://stackoverflow.com/questions/5444249/unable-to-find-the-wrapper-https-did-you-forget-to-enable-it-when-you-config?rq=1 सभ्य के लिए जवाब। उत्तर सावधानी से पढ़ें और एप्राइपिएट 'php.ini' में एक्सटेंशन को सक्षम करें। अपाचे को पुनरारंभ करना न भूलें। – GuyT

उत्तर

0

मुझे एक ही समस्या थी। मैं फेसबुक ग्राफ तक पहुंचने की कोशिश कर रहा था। ऐसा नहीं था कि यह यूआरएल तक नहीं पहुंच सका, यह था कि फेसबुक 400 त्रुटि लौटा रहा था क्योंकि मैं पैरामीटर को पार नहीं कर रहा था। किसी साइट पर HTTPS से कनेक्ट करने का प्रयास करें जिसमें एक कार्यरत HTTPS कनेक्शन होगा। जैसे इस प्रयास करें:

file_get_contents("https://www.namhost.com"); 

अगर वह काम करता है, जैसा कि आप देख चाहिए क्यों HTTPS कनेक्शन आप विफल हो रहा है से कनेक्ट हो रहे हैं, क्योंकि समस्या नहीं है कि आप HTTPS कनेक्ट नहीं कर सकता है, बल्कि यह है कि आप क्या कनेक्ट हो रहे हैं अनुरोध पसंद नहीं है।

+0

का संभावित डुप्लिकेट यह मेरी मदद नहीं करता ब्राउज़र से यूआरएल काम कर रहा है .. –

-1

कृपया सुनिश्चित करें कि php.ini में allow_url_include और allow_url_fopen 'ऑन' पर सेट हैं या नहीं।

इन पंक्तियों पर टिप्पणी की जाती है तो उन्हें असम्बद्ध करें। , (How to get file_get_contents() to work with HTTPS? पर स्वीकार किए जाते हैं जवाब से लिया)

$w = stream_get_wrappers(); 
echo 'openssl: ', extension_loaded ('openssl') ? 'yes':'no', "\n"; 
echo 'http wrapper: ', in_array('http', $w) ? 'yes':'no', "\n"; 
echo 'https wrapper: ', in_array('https', $w) ? 'yes':'no', "\n"; 
echo 'wrappers: ', var_dump($w); 
0

की तरह लोगों का कहना है विन्यास के साथ की जाँच करें:

इसके अलावा, आप निदान के लिए निम्न स्क्रिप्ट का उपयोग कर सकते हैं। वेब पेज पर OpenSSL के लिए

phpinfo.php

<?php 
phpinfo(); 
?> 

खोजें। इसके अलावा, php.ini फ़ाइल को बदलने के बाद WebServer को पुनरारंभ करना न भूलें।

यदि आप file_get_contents() का उपयोग नहीं कर सकते हैं, तो उपलब्ध होने के बजाय curl का उपयोग करें, यह कई तरीकों से और तेज़ी से बेहतर है।

function url($url,$option = null) { 

    $cURL = curl_init(); 

    if ($option) { 
     curl_setopt($cURL, CURLOPT_URL, $url.$option); 
    } else { 
     curl_setopt($cURL, CURLOPT_URL, $url); 
    } 

    curl_setopt($cURL, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($cURL, CURLOPT_AUTOREFERER, 1); 
    curl_setopt($cURL, CURLOPT_HTTPGET, 1); 
    curl_setopt($cURL, CURLOPT_VERBOSE, 0); 
    curl_setopt($cURL, CURLOPT_HEADER, 0); 
    curl_setopt($cURL, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt($cURL, CURLOPT_SSL_VERIFYPEER, 1); 
    curl_setopt($cURL, CURLOPT_SSL_VERIFYHOST, 1); 
    curl_setopt($cURL, CURLOPT_DNS_USE_GLOBAL_CACHE, 0); 
    curl_setopt($cURL, CURLOPT_DNS_CACHE_TIMEOUT, 2); 

    $output['page'] = curl_exec($cURL); 
    $output['contentType'] = curl_getinfo($cURL, CURLINFO_CONTENT_TYPE); 

    curl_close($cURL); 

    return $output; 

} 

$page = url('https://example.com/','i/like/subfolders'); 
3

SOLVED

इस त्रुटि को हल करने के लिए, आप अपने वेबसर्वर पर PHP के लिए OpenSSL पैकेज स्थापित करने की जरूरत है। अपने वेब सर्वर को पुनः आरंभ php53_openssl और:

एक FreeBSD सर्वर पर, आप निम्न पैकेज स्थापित करने की आवश्यकता हो सकती है।

एक विंडोज सर्वर पर, अपने php.ini कॉन्फ़िग फ़ाइल खोलने के लिए और बस निम्न पंक्ति uncomment:

;extension=php_openssl 

और वेब सर्वर को पुनरारंभ करें। त्रुटि हल होनी चाहिए।

संदर्भ: मैं इसे this link से लाता हूं जो मेरे लिए काम करता है .., इसलिए क्रेडिट उसके पास जाता है।

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