जवाबों:
आपको वास्तव में चेतावनी के कारण कुछ भी ठीक करना चाहिए, लेकिन आप त्रुटियों की दृश्यता को नियंत्रित कर सकते हैं error_reporting()
। चेतावनी संदेशों को छोड़ने के लिए, आप कुछ का उपयोग कर सकते हैं:
error_reporting(E_ERROR | E_PARSE);
E_ALL ^ E_WARNING
, चेतावनी के अलावा सभी त्रुटि रिपोर्टिंग को सक्षम करने के लिए, तर्क का एक बेहतर विकल्प की तरह लगता है error_reporting
।
आप सभी त्रुटि संदेशों को दबाने के लिए अपने फ़ंक्शन कॉल के सामने एक @ डाल सकते हैं ।
@yourFunctionHere();
dns_get_record
चेतावनी फेंक देंगे। आपका कोड चेतावनी के लिए क्षतिपूर्ति कर सकता है लेकिन यह अभी भी उन्हें फेंकता है। रिपोर्टिंग रिपोर्टिंग को बंद करना प्रोडक्शन सर्वर पर काम करता है, लेकिन डीवेल सर्वर पर नहीं। यदि आप XML सामग्री उत्पन्न कर रहे हैं, तो चेतावनी ब्राउज़र को रेंडर न करने का कारण बनेगी क्योंकि सर्वर विकृत XML को चेतावनी के कारण भेज रहा है। कभी-कभी आप चाहते हैं कि देवल पर, लेकिन अस्थायी DNS लुकअप विफलता के कारण कुछ के लिए नहीं जो आप पहले से ही क्षतिपूर्ति करते हैं।
यदि आप चेतावनियों के साथ-साथ त्रुटियों का उपयोग नहीं करना चाहते हैं
// Turn off all error reporting
error_reporting(0);
कोर Php में आम के शीर्ष पर चेतावनी संदेश सेट error_reporting (0) छिपाने के लिए फ़ाइल या व्यक्तिगत फ़ाइल शामिल है।
Wordpress में चेतावनियाँ और नोटिस wp-config.php फ़ाइल में निम्नलिखित कोड जोड़ते हैं
ini_set('log_errors','On');
ini_set('display_errors','Off');
ini_set('error_reporting', E_ALL );
define('WP_DEBUG', false);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
सवाल का सही जवाब नहीं दे रहा है, लेकिन मुझे लगता है कि यह कुछ स्थितियों में बेहतर समझौता है:
तीसरे पक्ष के पुस्तकालय में एक प्रिंटफ () स्टेटमेंट के परिणामस्वरूप मेरे पास एक चेतावनी संदेश था। मुझे ठीक-ठीक पता था कि कारण क्या था - एक अस्थायी काम-के आसपास जबकि तीसरे पक्ष ने अपना कोड तय किया था। मैं इस बात से सहमत हूं कि चेतावनियों को दबाया नहीं जाना चाहिए, लेकिन मैं अपने क्लाइंट को चेतावनी संदेश के साथ स्क्रीन पर पॉपिंग संदेश के साथ अपना काम प्रदर्शित नहीं कर सका। मेरा समाधान:
printf('<div style="display:none">');
...Third-party stuff here...
printf('</div>');
चेतावनी अभी भी पृष्ठ स्रोत में मेरे लिए एक अनुस्मारक के रूप में थी, लेकिन क्लाइंट के लिए अदृश्य थी।
ob_start()
और ob_end_clean()
इसके बजाय उपयोग करना चाहते हैं । इस तरह सामान ब्राउज़र पर भी नहीं भेजा जाता है (जो कि वह यहाँ करता है)।
मुझे लगता है कि बेहतर समाधान .htaccess का कॉन्फ़िगरेशन है। इस तरह से आपको आवेदन के कोड को बदलना नहीं है। यहाँ Apache2 के निर्देश हैं
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
php_value docref_root 0
php_value docref_ext 0
आप error_reporting का उपयोग करके चेतावनी को दबा सकते हैं लेकिन बेहतर तरीका यह है कि आप अपनी स्क्रिप्ट को पहले स्थान पर ठीक करें।
यदि आप नहीं जानते कि कैसे, अपने प्रश्न को संपादित करें और हमें प्रश्न में पंक्ति और प्रदर्शित होने वाली चेतावनी दिखाएं।
त्रुटि नियंत्रण ऑपरेटर के साथ पहले से ही उत्तर है लेकिन इसमें स्पष्टीकरण की कमी है। आप @
प्रत्येक अभिव्यक्ति के साथ ऑपरेटर का उपयोग कर सकते हैं और यह त्रुटियों को छिपाता है (घातक त्रुटियों को छोड़कर)।
@$test['test']; //PHP Notice: Undefined variable: test
@(14/0); // PHP Warning: Division by zero
//This is not working. You can't hide Fatal Errors this way.
@customFuntion(); // PHP Fatal error: Uncaught Error: Call to undefined function customFuntion()
डिबगिंग के लिए यह तेज़ और सही विधि है। लेकिन आपको इसे कभी भी उत्पादन पर उपयोग नहीं करना चाहिए और न ही अपने स्थानीय संस्करण में स्थायी रूप से शामिल करना चाहिए। यह आपको अत्यधिक अनावश्यक जलन देगा।
आपको इसके बजाय विचार करना चाहिए:
1. स्वीकार किए गए उत्तर में उल्लिखित सेटिंग की त्रुटि रिपोर्ट।
error_reporting(E_ERROR | E_PARSE);
या PHP INI सेटिंग्स से
ini_set('display_errors','Off');
2. अपवादों को पकड़ना
try {
$var->method();
} catch (Error $e) {
// Handle error
echo $e->getMessage();
}