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

كما تقول رسالة الخطأ، لا يمكن فتح الدفق (URL) المطلوب. هنالك العديد من الاسباب المحتملة لهذا:
1. عنوان URL الأساسي سيء. $pc['pcname']

2. اسم المستخدم و/أو كلمة المرور سيئة
3. اسم المستخدم/كلمة المرور ليس لديهم إذن على الخادم
4. لا يمكن لنظامك الوصول إلى الخادم (جدار الحماية، أذونات PHP، …)
4. …

سأستخدم الإستراتيجية التالية لتصحيح الأخطاء:
1. قم بتفريغ $url واكتبه.
2. استخدم متصفحًا مزودًا بأدوات تصحيح الأخطاء (مثل Firefox/Firebug) وحاول الوصول إلى عنوان URL هذا.
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をコピーしました