2012-01-27 10 views
6

यह XAMPP के साथ स्थानीय होस्ट पर पूरी तरह से काम करता है पर काम नहीं कर रहा है, लेकिन जब मैं अपने सर्वर (host-ed.net) पर यह कोशिश, fopen किसी भी यूआरएल को नहीं खोल सकता, यह केवल बगैर http फ़ाइलों के लिए काम करता है।fopen अपने सर्वर

<?php 
$file="http://www.google.es"; 
$gestor = fopen($file, "r") or die ("Nothing"); 
?> 

इस कोड के साथ मेरे सर्वर में कुछ भी नहीं दिखाता है। Php.ini पर कुछ भी हो सकता है?

संपादित करें: allow_url_fopen = पर

संपादित करें: php.ini में यह हल है। मेरे सर्वर ने इसे अक्षम कर दिया था, लेकिन अब यह सक्षम है। उत्तर के लिए धन्यवाद।

उत्तर

8

fopen किसी भी यूआरएल allow_url_fopen php.ini setting का मूल्य नहीं खोल सकता

की जांच:

var_dump(ini_get('allow_url_fopen')); 

यह शायद गलत है। आपको अपने वेब होस्ट से बात करने की आवश्यकता होगी, या किसी अन्य विधि को आजमाएं। Mabye CURL सक्षम है?

आप भी अपनी error_reporting और display_errors मूल्यों की जाँच करनी चाहिए। यूआरएल खोलने में असमर्थ होने के बारे में PHP को जोर से शिकायत करनी चाहिए थी। कोड विकसित करते समय आप दोनों को सभी तरह से चालू करना चाहते हैं, ताकि आप समझ सकें कि क्या गलत हो जाता है। अपने php.ini में allow-url-fopen के लिए

+0

क्षमा करें, मैं इसे लिखना भूल गया ... यह ठीक है। allow_url_fopen = – Fischer

+0

पर, उस स्थिति में, आप अपनी त्रुटि रिपोर्टिंग स्तर की जांच करना चाहेंगे और सुनिश्चित करें कि त्रुटियां प्रदर्शित की जा सकती हैं। PHP आपको तब बता सकता है कि वास्तव में क्या गलत हो रहा है। – Charles

2

fopen साथ यूआरएल को खोलने के लिए अनुमति php.ini की स्थापना allow_url_fopen द्वारा नियंत्रित है। आप phpinfo() का उपयोग कर अपनी वर्तमान सेटिंग देख सकते हैं जो आपके सभी सर्वर सेटिंग्स वाले एचटीएमएल डॉक को डंप करेगा।

0

http://php.net/manual/en/function.fopen.php के रूप में राज्यों,

फ़ाइल नाम प्रपत्र का है, तो "योजना: // ...", यह एक URL माना जाता है और PHP प्रोटोकॉल प्रबंधक (यह भी एक के रूप में जाना के लिए खोज करेंगे रैपर) उस योजना के लिए। यदि उस प्रोटोकॉल के लिए कोई रैपर पंजीकृत नहीं है, तो PHP आपकी स्क्रिप्ट में संभावित समस्याओं को ट्रैक करने में आपकी सहायता के लिए एक नोटिस उत्सर्जित करेगा और फिर जारी रखें जैसे फ़ाइल नाम नियमित फ़ाइल निर्दिष्ट करता है।

इसलिए मुझे लगता है कि यूआरएल के लिए कोई पंजीकृत लपेटा नहीं गया है, और PHP नियमित रूप से फ़ाइल नाम के रूप में इसका इलाज कर रहा है, जो अस्तित्व में नहीं है।

0

, कर्ल का प्रयास करता है, तो यह है कि वेब सर्वर पर स्थापित यह काम करेंगे।

0

आप एक मुफ्त होस्टिंग खाता है? अधिकांश होस्टिंग सेवाएं दुर्व्यवहार को रोकने के लिए मुफ्त खातों के लिए आउटगोइंग कनेक्शन सीमित करती हैं। इसे आज़माएं:

$fp = fsockopen("some.alive.site", 80, $errno, $errstr, 30); 
if (!$fp) { 
    echo "$errstr ($errno)<br />\n"; 
} else { 
    echo "Everything is OK"; 
    fclose($fp); 
} 

यदि आपको एक त्रुटि संदेश दिखाई देगा - आपको आउटगोइंग कनेक्शन बनाने की अनुमति नहीं है।

0

आप PHP-एफ पी एम का उपयोग कर रहे हैं, तो भी pool.d/ में विन्यास फाइल की जाँच करें।PHP-FPM पूल php_admin_flag, php_admin_value, php_flag या php_value का उपयोग कर PHP सेटिंग्स को ओवरराइड कर सकते हैं। (हमने इसका सामना उबंटू 16 वीपीएस पर किया)

संबंधित मुद्दे