2013-04-21 7 views
6

मैं file_get_contents विधि संभाल उपयोगकर्ता एक गलत वेबसाइट यह बल्कि तो एक त्रुटि संदेश गूंज जाएगा अव्यवसायिकfile_get_contents त्रुटियों को संभालने के लिए अच्छा तरीका

चेतावनी में प्रवेश करती है तो भले ही त्रुटि के लिए कोशिश कर रहा हूँ: file_get_contents (sidiowdiowjdiso): स्ट्रीम को खोलने में विफल: ऐसी कोई फ़ाइल या सी में निर्देशिका: \ XAMPP \ लाइन पर htdocs \ test.php 6

मैंने सोचा कि अगर मैं एक कोशिश कर सकते हैं और पकड़ यह त्रुटि को पकड़ने के लिए सक्षम हो जाएगा लेकिन यह है कि काम नहीं किया।

try 
{ 
$json = file_get_contents("sidiowdiowjdiso", true); //getting the file content 
} 
catch (Exception $e) 
{ 
throw new Exception('Something really gone wrong', 0, $e); 
} 
+4

तुम बहुत कम से कम यूआरएल आपको चाहिए पढ़ना चाहते हैं मान्य है कि वे URL जैसे पहले देखने को क्रियान्वित करने का प्रयास करें अन्यथा लोग अपने सर्वर पर फ़ाइलों को पढ़ सकता। एक बेहतर विकल्प CURL –

उत्तर

10

कोशिश cURL:

एक वैश्विक त्रुटि हैंडलर सेट (कि इच्छा:

<?php 
// Create a curl handle to a non-existing location 
$ch = curl_init('http://404.php.net/'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$json = ''; 
if(($json = curl_exec($ch)) === false) 
{ 
    echo 'Curl error: ' . curl_error($ch); 
} 
else 
{ 
    echo 'Operation completed without any errors'; 
} 

// Close handle 
curl_close($ch); 
?> 
+8

डाउन-वोट किया गया क्योंकि यह file_get_contents() के उपयोग के संबंध में ओपी के प्रश्न का उत्तर नहीं है - एक विकल्प प्रदान करना वास्तविक समाधान नहीं है। ओपी ने फाइल_get_contents() से त्रुटियों और चेतावनियों को कैसे संभालना है, यह नहीं पूछा कि यह पूरी तरह से अलग तरीके से कैसे करें। कृपया ध्यान दें कि curl PHP की file_get_contents() के लिए ड्रॉप-इन प्रतिस्थापन नहीं है और किसी भी व्यक्ति को इस कदम को गंभीर रूप से पुन: सक्रिय करना होगा, इसलिए यह स्वीकार्य उत्तर क्यों नहीं है। – tpartee

7

file_get_contents त्रुटि में एक अपवाद फेंक नहीं है, बजाय यह गलत देता है, तो आप देख सकते हैं कि दिए गए मान गलत है:

$json = file_get_contents("sidiowdiowjdiso", true); 
if ($json === false) { 
    //There is an error opening the file 
} 

इस तरह से आप अभी भी चेतावनी मिलती है, अगर आप चाहते हैं इसे हटाने के लिए, आपको के सामने file_get_contents के सामने रखना होगा। (यह एक बुरा व्यवहार माना जाता है) file_get_contents के बजाय curl_error साथ

$json = @file_get_contents("sidiowdiowjdiso", true); 
+7

का उपयोग कर सकता है, '@' 'के उपयोग को बढ़ावा देने के बजाय [error_reporting()] (http://uk1.php.net/manual/en/function.error-reporting.php) पर चर्चा करना बेहतर हो सकता है। –

+0

शायद यह ध्यान देने योग्य है कि '@' उपसर्ग का उपयोग करते समय उपयोगकर्ताओं को त्रुटि संदेश प्रदर्शित करना बंद हो सकता है, यदि आप 'set_error_handler' को दिए गए फ़ंक्शन का उपयोग करके फ़ाइलों में त्रुटियों को लॉग कर रहे हैं तो आप अभी भी फ़ाइलों में लॉग इन चेतावनियां देखेंगे, और यदि आपने नहीं किया है तो उन्हें आपके वेब सर्वर लॉग में शामिल किया जाएगा। – richhallstoke

4

आप निम्न में से किसी भी कर सकता है चेतावनी भी संभालें), आपके सभी अनचाहे अपवादों के लिए: http://php.net/manual/en/function.set-error-handler.php

या file_get_conten के वापसी मूल्य की जांच करके ts फ़ंक्शन (=== ऑपरेटर के साथ, क्योंकि यह असफलता पर बूलियन झूठा लौटाएगा), और उसके बाद त्रुटि संदेश को तदनुसार प्रबंधित करें, और "@" को प्रीपेड करके फ़ंक्शन पर त्रुटि रिपोर्टिंग को अक्षम करें:

$json = @file_get_contents("file", true); 
if($json === false) { 
// error handling 
} else { 
// do something with $json 
} 
+0

जब मैंने इस कोड को आजमाया तो यह हमेशा गलत पढ़ता है भले ही यूआरएल वैध था – Hashey100

-1

अपने समस्या का समाधान के रूप में, कोड स्निपेट निम्नलिखित

try 
{ 
    $json = @file_get_contents("sidiowdiowjdiso", true); //getting the file content 
    if($json==false) 
    { 
    throw new Exception('Something really gone wrong'); 
    } 
} 
catch (Exception $e) 
{ 
    echo $e->getMessage(); 
} 
+0

तब भी मुझे चेतावनी मिलती है जब मैंने आपका कोड – Hashey100

+0

निष्पादित किया था, तो कृपया उपर्युक्त कोड स्निपेट –

+0

निष्पादित करने का प्रयास करें, वही परिणाम हमेशा गलत लौटाता है भले ही वैध यूआरएल दर्ज किया गया हो www.google.com – Hashey100

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

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