मैं अपने सर्वर पर बनाए गए PHP पेज से इस विशेष REST सेवा तक पहुँचने की कोशिश कर रहा हूँ। मैंने समस्या को इन दो पंक्तियों तक सीमित कर दिया। तो मेरा PHP पेज इस तरह दिखता है:
<?php
$response = file_get_contents("https://maps.co.weber.ut.us/arcgis/rest/services/SDE_composite_locator/GeocodeServer/findAddressCandidates?Street=&SingleLine=3042+N+1050+W&outFields=*&outSR=102100&searchExtent=&f=json");
echo $response; ?>
पृष्ठ निम्न त्रुटियों के साथ लाइन 2 पर मर जाता है:
- चेतावनी: file_get_contents (): SSL ऑपरेशन कोड 1 के साथ विफल हुआ। OpenSSL त्रुटि संदेश: त्रुटि: 14090086: SSL रूटीन: SSL3_GET_SERVER_CERTIFICATE: प्रमाणपत्र सत्यापन विफल हुआ ... पंक्ति 2 में php के लिए
- चेतावनी: file_get_contents (): पंक्ति 2 में crypto ... php को सक्षम करने में विफल
- चेतावनी: file_get_contents (
https://maps.co.weber.ut.us/arcgis/rest/services/SDE_composite_locator/GeocodeServer/findAddressCandidates?Street=&SingleLine=3042+N+1050+W&outFields=*&outSR=102100&searchExtent=&f=json
): स्ट्रीम खोलने में विफल: ऑपरेशन में विफल ... लाइन 2 पर php
हम एक Gentoo सर्वर का उपयोग कर रहे हैं। हमने हाल ही में PHP संस्करण 5.6 में अपग्रेड किया है। यह अपग्रेड के बाद था जब यह समस्या सामने आई।
मैंने पाया कि जब मैं REST सेवा को एक पते के साथ प्रतिस्थापित करता हूं जैसे https://www.google.com
; मेरा पेज ठीक काम करता है।
पहले के प्रयास में मैंने सेट किया “verify_peer”=>false
, और पास किया कि file_get_contents के तर्क के रूप में, जैसा कि यहाँ वर्णित है: file_get_contents verify_peer => को अनदेखा कर रहा है? लेकिन जैसे लेखक ने नोट किया; इससे कोई फर्क नहीं पड़ा।
मैंने अपने सर्वर प्रशासकों से पूछा है कि क्या हमारे php.ini फ़ाइल में ये लाइनें मौजूद हैं:
- विस्तार = php_openssl.dll
- allow_url_fopen = पर
उन्होंने मुझे बताया कि चूंकि हम जेंटू में हैं, इसलिए जब हम निर्माण करते हैं तो ओपनसेल संकलित होता है; और यह php.ini फ़ाइल में सेट नहीं है।
मैंने यह भी पुष्टि की कि allow_url_fopen
काम कर रहा है। इस समस्या की विशेष प्रकृति के कारण; मुझे मदद के लिए बहुत सारी जानकारी नहीं मिल रही है। क्या आप में से कोई इस तरह से आया है? धन्यवाद।