दिलचस्प पोस्ट
क्या यह संभव है "टी के एक सामान्य सरणी एक varargs पैरामीटर के लिए बनाया है" संकलक चेतावनी? क्यों हमेशा बंद डेटाबेस कनेक्शन? PHP में दिए गए कुंजी के मान द्वारा एसोसिएटिव एरे की एक सरणी कैसे सॉर्ट करनी है? वहाँ एक अच्छा jQuery खींचें और ड्रॉप फ़ाइल अपलोड प्लगइन है? जब मेरे पास सूचीबॉक्सेज़ में मेरे पास छवियाँ हैं, तो मुझे आउटऑफ़मॉमी अपवाद क्यों मिलता है? मामले में गिट में बदलाव को कैसे अनदेखा करें? यह एक सामान्य प्रकार से संबंधित प्रकार का उपयोग करने के लिए कब उपयुक्त है? मैं गिट में निर्देशिका में फ़ाइलों को कैसे अनदेखा कर सकता हूं? सिस्टम। विंडोज या एएसपी.नेट सेवाओं में डालना "वैनिला" जावास्क्रिप्ट पुस्तकालयों को नोड.जेएस में लोड करें मोबाइल के लिए HTTP शीर्षक "सामग्री-प्रकार: आवेदन / बल-डाउनलोड" की उपयोगिता? "आप जिस पृष्ठ का अनुरोध कर रहे हैं वह विस्तार कॉन्फ़िगरेशन के कारण नहीं किया जा सकता है।" त्रुटि संदेश नोड वस्तु और तत्व ऑब्जेक्ट के बीच का अंतर? Environment.getExternalStorageDirectory हटाये जाने योग्य मेमोरी के पथ को वापस नहीं करता है संदर्भ से कब और कब सी + + में पॉइंटर से गुजारें?

मैं PHP में file_get_contents () फ़ंक्शन की चेतावनी कैसे संभाल सकता हूं?

मैंने इस तरह एक PHP कोड लिखा था

$site="http://www.google.com"; $content = file_get_content($site); echo $content; 

लेकिन जब मैं "http: //" को $site से हटा देता हूं, तो मुझे निम्नलिखित चेतावनी मिलती है:

चेतावनी: file_get_contents (www.google.com) [function.file-get-content]: स्ट्रीम को खोलने में विफल:

मैंने कोशिश try और catch की try की लेकिन यह काम नहीं किया।

वेब के समाधान से एकत्रित समाधान "मैं PHP में file_get_contents () फ़ंक्शन की चेतावनी कैसे संभाल सकता हूं?"

चरण 1: वापसी कोड देखें: if($content === FALSE) { // handle error here... }

चरण 2: file_get_contents () : $content = @file_get_contents($site); के लिए कॉल के सामने एक त्रुटि नियंत्रण ऑपरेटर (यानी @ ) डालकर चेतावनी को $content = @file_get_contents($site);

आप अपने त्रुटि हैंडलर को एक अनाम फ़ंक्शन के रूप में भी सेट कर सकते हैं जो अपवाद को कहता है और उस अपवाद पर एक प्रयास / पकड़ का उपयोग करता है।

 set_error_handler( create_function( '$severity, $message, $file, $line', 'throw new ErrorException($message, $severity, $severity, $file, $line);' ) ); try { file_get_contents('www.google.com'); } catch (Exception $e) { echo $e->getMessage(); } restore_error_handler(); 

एक छोटी सी त्रुटि को पकड़ने के लिए बहुत सारे कोड की तरह लगता है, लेकिन यदि आप अपने ऐप के दौरान अपवादों का उपयोग कर रहे हैं, तो आपको केवल एक बार ऐसा करने की आवश्यकता होगी, शीर्ष पर (उदाहरण के लिए एक शामिल कॉन्फ़िग फ़ाइल में), और यह अपने सभी त्रुटियों को अपवादों में बदल दें

ऐसा करने का मेरा पसंदीदा तरीका काफी सरल है:

 if (!$data = file_get_contents("http://www.google.com")) { $error = error_get_last(); echo "HTTP request failed. Error was: " . $error['message']; } else { echo "Everything went better than expected"; } 

मैं ऊपर @ एनोबेरेव से try/catch प्रयोग के बाद पाया, लेकिन यह कम लंबा (और आईएमओ, अधिक पठनीय) कोड के लिए अनुमति देता है। हम बस त्रुटि का पाठ पाने के लिए error_get_last का उपयोग करते हैं, और file_get_contents विफलता पर गलत रिटर्न देता है, इसलिए एक साधारण "यदि" यह पकड़ सकता है।

आप एक @: $content = @file_get_contents($site); कर सकते हैं $content = @file_get_contents($site);

यह किसी चेतावनी को दबानेगा – संयम से उपयोग करें! । त्रुटि नियंत्रण ऑपरेटर देखें

संपादित करें: जब आप 'http: //' को हटा देते हैं तो आप अब किसी वेब पेज की तलाश नहीं कर रहे हैं, लेकिन आपकी डिस्क पर एक फ़ाइल "www.google ….." कहा जाता है

एक वैकल्पिक त्रुटि को दबाने और एक अपवाद भी फेंकना है जिसे आप बाद में पकड़ सकते हैं। यह विशेष रूप से उपयोगी है यदि आपके कोड में file_get_contents () पर कई कॉल्स हैं, क्योंकि आपको मैन्युअल रूप से दबाने और सभी को संभाल करने की आवश्यकता नहीं है। इसके बजाय, इस समारोह में एक ही प्रयास / कैच ब्लॉक में कई कॉल किए जा सकते हैं।

 // Returns the contents of a file function file_contents($path) { $str = @file_get_contents($path); if ($str === FALSE) { throw new Exception("Cannot access '$path' to read contents."); } else { return $str; } } // Example try { file_contents("a"); file_contents("b"); file_contents("c"); } catch (Exception $e) { // Deal with it. echo "Error: " , $e->getMessage(); } 

यहां बताया गया है कि मैंने इसे कैसे किया … कोशिश-पकड़ने के लिए कोई ज़रूरत नहीं है … सर्वोत्तम समाधान हमेशा सबसे आसान है … आनंद लें!

 $content = @file_get_contents("http://www.google.com"); if (strpos($http_response_header[0], "200")) { echo "SUCCESS"; } else { echo "FAILED"; } 
 function custom_file_get_contents($url) { return file_get_contents( $url, false, stream_context_create( array( 'http' => array( 'ignore_errors' => true ) ) ) ); } $content=FALSE; if($content=custom_file_get_contents($url)) { //play with the result } else { //handle the error } 

यहां बताया गया है कि मैं कैसे इसे संभालता हूं:

  $this->response_body = @file_get_contents($this->url, false, $context); if ($this->response_body === false) { $error = error_get_last(); $error = explode(': ', $error['message']); $error = trim($error[2]) . PHP_EOL; fprintf(STDERR, 'Error: '. $error); die(); } 

सबसे अच्छी बात यह होगी कि आप अपनी गलती और अपवाद प्रहस्तक सेट करेंगे, जो उपयोगी फाइलें में लॉगिंग या महत्वपूर्ण लोगों को ईमेल करना चाहते हैं। http://www.php.net/set_error_handler

आप इस स्क्रिप्ट का इस्तेमाल कर सकते हैं

 $url = @file_get_contents("http://www.itreb.info"); if ($url) { // if url is true execute this echo $url; } else { // if not exceute this echo "connection error"; } 

PHP 4 के उपयोग से error_reporting () :

 $site="http://www.google.com"; $old_error_reporting = error_reporting(E_ALL ^ E_WARNING); $content = file_get_content($site); error_reporting($old_error_reporting); if ($content === FALSE) { echo "Error getting '$site'"; } else { echo $content; } 

यह डेटा प्राप्त करने का प्रयास करेगा, अगर यह काम नहीं करेगा, तो यह त्रुटि को पकड़ लेगा और पकड़ में आपको कुछ भी करने की अनुमति देगा।

 try { $content = file_get_contents($site); } catch(\Exception $e) { return 'The file was not found'; } 
 try { $site="http://www.google.com"; $content = file_get_content($site); echo $content; } catch (ErrorException $e) { // fix the url } set_error_handler(function ($errorNumber, $errorText, $errorFile,$errorLine ) { throw new ErrorException($errorText, 0, $errorNumber, $errorFile, $errorLine); }); 

फ़ाइल php.ini बदलें

 allow_url_fopen = On allow_url_include = On 

आपको यह भी सेट करना चाहिए

allow_url_use = चालू

चेतावनी प्राप्त करना बंद करने के लिए अपने php.ini में

File_get_contents () का उपयोग करने से पहले आपको file_exists () फ़ंक्शन का उपयोग करना चाहिए इस तरह से आप php चेतावनी से बचना होगा।

 $file = "path/to/file"; if(file_exists($file)){ $content = file_get_contents($file); }