file_get_contents(url): स्ट्रीम खोलने में विफल

प्रोग्रामिंग


सभी को नमस्कार;

मेरे पास एक PHP फ़ाइल है जो URL से सामग्री प्राप्त करती है, मुझे विफलता संदेश मिल रहा है

Warning: file_get_contents(http://xxxxxx): failed to open stream: HTTP request failed! in xxxx.php on line xx

मैंने बहुत सारे ऑनलाइन समाधान आज़माए लेकिन यह अभी भी काम नहीं कर रहा है। यहाँ कोड है

$cryptpass = rawurlencode(crypt($pc['pcpassword']));
$url = "http://" . $pc['pcname']."/Reports/ReportList.php?&username={$pc['pcusername']}&cryptpass=$cryptpass&noredir=1";
$parsed_list = read_general_list($url, false);
सी#
function read_general_list($url, $make_assoc = false)
    {
        $compressed_data = file_get_contents($url);
    }

$compressed_data हमेशा शून्य होता है और यह एक त्रुटि देता है:

चेतावनी: file_get_contents(http://xxxxxx): स्ट्रीम खोलने में विफल: HTTP अनुरोध विफल! xxxx.php में लाइन xx पर

कृपया कोई सुझाव?

समाधान 1

जैसा कि त्रुटि संदेश कहता है, अनुरोधित स्ट्रीम (यूआरएल) खोला नहीं जा सकता। इसके कई संभावित कारण हैं:
1. आधार यूआरएल ख़राब है. $pc['pcname']

2. उपयोगकर्ता नाम और/या पासवर्ड ख़राब हैं
3. उपयोगकर्ता नाम/पासवर्ड की सर्वर पर अनुमति नहीं है
4. आपका सिस्टम सर्वर तक नहीं पहुंच सकता (फ़ायरवॉल, PHP अनुमतियाँ, …)
4. …

मैं डिबग करने के लिए निम्नलिखित रणनीति का उपयोग करूंगा:
1. $url को डंप करें और इसे लिख लें।
2. डिबग टूल (जैसे फ़ायरफ़ॉक्स/फ़ायरबग) वाले ब्राउज़र का उपयोग करें और उस यूआरएल तक पहुंचने का प्रयास करें।
3. यह देखने के लिए लौटाए गए हेडर को देखें कि सर्वर किस त्रुटि की रिपोर्ट करता है (यदि कोई हो)।
4. इस बारे में सोचें कि वह त्रुटि क्यों लौटाई गई…

प्रोत्साहित करना,
पीटर

यदि यह आपके प्रश्न का उत्तर देता है, तो वोट करें और इसे स्वीकृत के रूप में चिह्नित करें।

समाधान 2

मुझे खेद है, मैंने इस प्रश्न को कभी भी पूरी तरह से अपडेट नहीं किया। हो सकता है अगर कोई अभी भी इसका उत्तर ढूंढ रहा हो।

इसने मेरे लिए काम किया है. यह File_get_contents के लिए समतुल्य फ़ंक्शन है, लेकिन बड़ी मात्रा में डेटा को संभाल सकता है। मुझे यह समाधान ऑनलाइन मिला।

function file_get_contents_curl($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //Set curl to return the data instead of printing it to the browser.
curl_setopt($ch, CURLOPT_URL, $url);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}

コメント

タイトルとURLをコピーしました