रैपर "https" खोजने में असमर्थ - क्या आपने PHP को कॉन्फ़िगर करते समय इसे सक्षम करना भूल गए थे?


Answers

मुझे xampp/php/php.ini में स्थित php.ini फ़ाइल में extension=php_openssl.dll जोड़ना था। किसी तरह यह नहीं था, इसे जोड़ने और अपाचे को फिर से शुरू करने के बाद सब कुछ ठीक काम कर रहा था।

Question

समस्या सवाल में है मैंने इसके बारे में समाधान के लिए पूरी तरह से जांच की है और मुझे पता है कि इसके विषय हैं और मैंने उनका पालन किया है और कुछ भी नहीं किया है। कहा जा रहा है कि मैं अभी तक मैंने जो किया है सब कुछ ठीक से सूचीबद्ध करेंगे। मैं अपने विंडोज एक्सपी कंप्यूटर पर नवीनतम ग्रहण संस्करण पर जेड डीबगिंग के साथ PHP 5.2.14 चला रहा हूं। मेरे पास 1 जीबी रैम है I मेरे पास XAMPP अपाचे, MySQL, और FileZilla के साथ चल रहा है।

XAMPP पर मैंने निम्नलिखित किया है (इन परिवर्तनों के दौरान अपाचे बंद था): XAMPP कंट्रोल पैनल से व्यवस्थापक पर क्लिक किया गया और https:// localhost/xampp/ चला गया वहां से मैंने स्वागत लाइन पर इस रेखा से कतारों को स्वीकार किया:

ओपनएसएसएल समर्थन के लिए कृपया https: // 127.0.0.1 या https: // localhost के साथ परीक्षण प्रमाणपत्र का उपयोग करें।

उस खंड पर मैंने phpinfo() जांच की 'पर्यावरण' के तहत, SERVER["HTTPS"] on 'अपाचे पर्यावरण' के तहत, HTTPS On 'PHP वेरिएबल्स, _SERVER["HTTPS"] अंतर्गत On 'Phar' के तहत, OpenSSL support disabled (ext / openssl को इंस्टॉल करें) मैं नहीं जानता कि कैसे Phar एक को सक्षम करने के लिए

अब सी: \ xampp में फाइलों के बारे में, मैं PHP फ़ोल्डर में गया था। दोनों उत्पादन और विकास php.ini फ़ाइलों (माफ़ी की तुलना में बेहतर सुरक्षित) के तहत, मेरे पास allow_url_fopen=On , allow_url_include=On , और मैंने अर्धविराम हटा दिया है, ताकि extension=php_openssl.dll को अब टिप्पणी नहीं की जा extension=php_openssl.dll । मैंने यह भी पुष्टि की है कि .dll PHP फ़ोल्डर के ext फ़ोल्डर में है। दोनों libeay32.dll और ssleay32.dll PHP और अपाचे फ़ोल्डर में हैं। अपाचे फ़ोल्डर में उत्पादक या विकास php.ini फ़ाइलों को शामिल नहीं किया गया है।

मैं http://www.slproweb.com/products/Win32OpenSSL.html पर गया और सुरक्षित उपाय के लिए Win32 OpenSSL v1.0.0d स्थापित किया है।

अब मेरे retrieve_website.php में कोड की लाइन इस तरह दिखती है:

$urlquery = "https://www.googleapis.com/customsearch/v1?key=".$appid."&cx=".$google_searchid."&q=".$query."&alt=atom&num=".$results;
$xmlresults = file_get_contents($urlquery);

मेरे पास दो अन्य वेबसाइटें हैं जिन्हें मैं पूछता हूं लेकिन वे HTTP के माध्यम से सेवा की जाती हैं और वे ठीक काम करते हैं मेरे पास स्क्रिप्ट के अंत के पास दर्ज की गई यह पंक्ति भी है:

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);

जब मैं इसे ग्रहण पर एक PHP स्क्रिप्ट के रूप में चलाता हूँ, तो सब कुछ मेरे द्वारा इन परिणामों के साथ जिस तरह से करना चाहता है, पूरी तरह से ठीक से काम करता है:

openssl: yes
http wrapper: yes
https wrapper: yes
wrappers: array(10) {
  [0]=>
  string(5) "https"
  [1]=>
  string(4) "ftps"
  [2]=>
  string(3) "php"
  [3]=>
  string(4) "file"
  [4]=>
  string(4) "data"
  [5]=>
  string(4) "http"
  [6]=>
  string(3) "ftp"
  [7]=>
  string(13) "compress.zlib"
  [8]=>
  string(14) "compress.bzip2"
  [9]=>
  string(3) "zip"
}

मैंने इन सभी परिवर्तनों के बावजूद (अपाचे शुरू करने के बाद), मुझे पहली बार त्रुटि मिलती है, जब मैं पहली बार एलेप्से और फ़ायरफ़ॉक्स में एचपी : http://localhost/tutorial/retrieve_website.php के माध्यम से अपनी PHP स्क्रिप्ट का उपयोग करता हूं:

चेतावनी: file_get_contents () [function.file-get-content]: आवरण "https" खोजने में असमर्थ - क्या आपने PHP को कॉन्फ़िगर करते समय इसे सक्षम करना भूल रखा था? सी में: \ xampp \ htdocs \ tutorial \ retrieve_website.php पंक्ति 2 पर

चेतावनी: file_get_contents (https: // www.googleapis.com/customsearch/v1?key= हटाए गए API आईडी और cx = हटाए गए खोज आईडी और क्यू = शैतान + + + + + + जॉर्जिया और alt = atom और num = 5) [function.file -टेट-सामग्री]: स्ट्रीम खोलने में असफल: सी: \ xampp \ htdocs \ tutorial \ retrieve_website.php पंक्ति 2 पर ऐसी कोई फ़ाइल या निर्देशिका नहीं है

चेतावनी: DOMDocument :: loadXML () [domdocument.loadxml]: रिक्त स्ट्रिंग सी में इनपुट के रूप में आपूर्ति की गई: \ xampp \ htdocs \ tutorial \ retrieve_website.php पंक्ति 33 पर

openssl: no http आवरण: हाँ https आवरण: कोई रैपर: सरणी (10) {[0] => स्ट्रिंग (3) "php" [1] => स्ट्रिंग (4) "फ़ाइल" [2] => स्ट्रिंग (4 (3) "FTP" [3] => स्ट्रिंग (4) "डेटा" [4] => स्ट्रिंग (4) "http" [5] => स्ट्रिंग (3) "ftp" [6] => स्ट्रिंग (3) " ज़िप "[7] => स्ट्रिंग (13)" compress.zlib "[8] => स्ट्रिंग (14)" compress.bzip2 "[9] => स्ट्रिंग (4)" फ़ार "}

यह क्या है कि मैंने अनदेखा किया या विफल रहा? अपने स्वयं के ज्ञान के लिए, मैंने जो कुछ भी मैंने एचटीटीपीएस और ओपनएसएसएल से संबंधित के बारे में शोध किया है




आप इसके बजाय इस फ़ंक्शन का उपयोग कर सकते हैं।

function get_url_contents($url){  
  if (function_exists('file_get_contents')) {  
    $result = @file_get_contents($url);  
  }  
  if ($result == '') {  
    $ch = curl_init();  
    $timeout = 30;  
    curl_setopt($ch, CURLOPT_URL, $url);  
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);  
    $result = curl_exec($ch);  
    curl_close($ch);  
  }  

  return $result;  
}



मैक एएमपीपीएस पर, मैंने निम्नलिखित के साथ php-5.5.ini को अपडेट किया है और अब यह काम करता है।

allow_url_include = On
extension=openssl.so



मेरे मामले में, यह मामला अपैच से सीएलआई के लिए एक अलग php.ini का उपयोग करते हुए WAMP के कारण था, इसलिए आपकी सेटिंग्स WAMP मेनू के माध्यम से सीएलआई पर लागू नहीं होती हैं। बस सीएलआई php.ini को संशोधित करें और यह काम करता है।




मैं opsenSUSE लीप का उपयोग कर रहा हूं, और मुझे एक ही समस्या थी - इसका मतलब है कि ओपनएसएसएल के लिए कोई समर्थन नहीं है। इस तरह मैंने इसे हल किया:

  1. ओएसएएसटी खोलें
  2. सॉफ्टवेयर प्रबंधन पर जाएं
  3. बाएं फलक पर खोज बॉक्स में, 'php5-openssl' दर्ज करें और वापसी कुंजी दबाएं।
  4. इसे चुनने के लिए दाएं फलक में 'php5-openssl' के बगल में स्थित चेकबॉक्स पर क्लिक करें, और 'स्वीकार' पर क्लिक करें (यह ओपनएसएसएल समर्थन जोड़ता है)।
  5. अपाचे को पुनरारंभ करें: sudo service apache2 restart

यही है, आप कर चुके हैं




पूरे दिन घूमने के बाद, मुझे इस गाइड का जवाब धन्यवाद मिला: http://piwigo.org/forum/viewtopic.php?id=15727

मुख्यतः ग्रहण -> विंडोज़ -> वरीयताएँ -> PHP एक्जीक्यूटेबल्स के तहत, यहां एक ऐसा खंड है जहां .exe और .ini का संदर्भ दिया गया है। डिफ़ॉल्ट वाले ईक्लीपस निर्देशिका में थे जब आप एप्पलस से पीएचपी डेवलपमेंट टूल्स एसडीके फीचर स्थापित करते हैं, तो मदद मेनू में नए सॉफ्टवेयर को स्थापित करें।

इसलिए इसके बजाय, मैंने PHP 5.3.5 (सीजीआई) नामक एक नया निष्पादक जोड़ा और xpgp के php फ़ोल्डर से cgi.exe और .ini का संदर्भ दिया।

मेरी मदद करने के लिए अपना समय देने के लिए धन्यवाद।




आपका अपाचे संभवतः SSL समर्थन से संकलित नहीं किया गया है वैसे भी file_get_contents के बजाय curl का उपयोग करें यह कोड आज़माएं, अगर यह विफल हो तो मैं सही हूँ

function curl_get_contents($url)
{
  $curl = curl_init($url);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
  curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
  curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
  $data = curl_exec($curl);
  curl_close($curl);
  return $data;
}