एक बग की तरह लगता है। लेकिन अभी भावी पीढ़ी के लिए, यहाँ कुछ चीजें आप डिबग करने के लिए चाहते हो सकता है कर रहे हैं।
allow_url_fopen
: पहले से ही परीक्षण किया अपाचे के तहत
- पीएचपी पीएचपी-CLI से अलग तरीके से व्यवहार कर सकता है और chroot/SELinux/FastCGI/आदि में संकेत होगा।सुरक्षा प्रतिबंधों
- स्थानीय फ़ायरवॉल: संभावना नहीं कर्ल काम करता है के बाद से
- उपयोगकर्ता-एजेंट अवरुद्ध: यह बहुत आम वास्तव में, वेबसाइटों क्रॉलर्स और अज्ञात ग्राहकों को ब्लॉक है
अपने आईएसपी, जो या तो mangles या ब्लॉक (पीएचपी उपयोगकर्ता- से
- पारदर्शी प्रॉक्सी एजेंट या गैर उपयोगकर्ता-एजेंट
वैसे भी मैलवेयर)
पीएचपी धारा आवरण समस्याओं व्याख्या की जा सकती है, पहले आइए सबूत है कि PHPs धारा संचालकों कार्य कर रहे हैं:
<?php
if (!file_get_contents("data:,ok")) {
die("Houston, we have a stream wrapper problem.");
}
फिर यह देखने का प्रयास करें कि क्या PHP वास्तविक HTTP अनुरोध करता है या नहीं। कंसोल पर सबसे पहले खुला netcat:
nc -l 80000
और डिबग बस के साथ:
<?php
print file_get_contents("http://localhost:8000/hello");
और यहाँ से आप PHP के साथ संवाद करने की कोशिश कर सकते हैं, अगर कुछ भी देता है अगर आप प्रतिक्रिया variate देखते हैं। नेटकैट में पहले अमान्य प्रतिक्रिया दर्ज करें। अगर कोई त्रुटि फेंक नहीं है, तो आपका PHP पैकेज बोर्क किया गया है।
(तुम भी एक से अधिक संवाद स्थापित करने की कोशिश कर सकते "टीसीपी: // .." तो संभाल।)
आगे http धारा आवरण मानकों के साथ प्रयोग किया जाता है। http://example.com/ का शाब्दिक रूप से उपयोग करें, जो काम करने के लिए जाना जाता है और कभी भी उपयोगकर्ता-एजेंटों को अवरुद्ध नहीं करता है।
$context = stream_context_create(array("http"=>array(
"method" => "GET",
"header" => "Accept: xml/*, text/*, */*\r\n",
"ignore_errors" => false,
"timeout" => 50,
));
print file_get_contents("http://www.example.com/", false, $context, 0, 1000);
मुझे लगता है कि ignore_errors यहाँ बहुत ही प्रासंगिक है। लेकिन http://www.php.net/manual/en/context.http.php की जाँच और विशेष रूप से स्थापित करने के लिए protocol_version
1.1 करने की कोशिश (chunked और प्रतिक्रिया की गलत व्याख्या की हो जाएगी, लेकिन कम से कम हम अगर कुछ भी रिटर्न देखेंगे)।
यदि यह भी असफल रहता है, तो http wrapper को हैक करने का प्रयास करें।
<?php
ini_set("user_agent" , "Mozilla/3.0\r\nAccept: */*\r\nX-Padding: Foo");
यह न केवल उपयोगकर्ता-एजेंट सेट करेगा, बल्कि अतिरिक्त शीर्षलेख इंजेक्ट करेगा। यदि http स्ट्रीम रैपर के भीतर अनुरोध के साथ एक प्रसंस्करण समस्या है, तो यह अंततः इसे पकड़ सकता है।
अन्यथा किसी भी ज़ेंड एक्सटेंशन को अक्षम करने का प्रयास करें, सुहोसिन, PHP xdebug, एपीसी और अन्य कोर मॉड्यूल। अंतर हो सकता है। अन्यथा यह फेडोरा पैकेज के लिए विशिष्ट समस्या है। एक नया संस्करण आज़माएं, देखें कि यह आपके सिस्टम पर बनी रहती है या नहीं।
वहाँ किसी भी कारण से भी आपको libcurl का उपयोग नहीं करना चाहते है? ऐसा लगता है कि यह काम कर रहा है यह आपके लिए एक आदर्श प्रतिस्थापन हो सकता है। – Treffynnon
@Treffynnon मैं अभी कोड का उपयोग करने के लिए कोड को फिर से लिख रहा हूं, लेकिन अभी भी जानना चाहता हूं कि file_get_contents() –
के साथ क्या गलत है यह किस विशिष्ट यूआरएल के लिए काम नहीं करता है? – mario