PHP

2010-01-01 4 views
151

में चेतावनी संदेश निकालें मेरे पास कुछ PHP कोड है। जब मैं इसे चलाता हूं, तो एक चेतावनी संदेश प्रकट होता है।PHP

मैं इन चेतावनी संदेशों को कैसे हटा/दबा सकता/निकाल सकता हूं?

उत्तर

236

आपको वास्तव में जो कुछ भी चेतावनी पैदा कर रहा है उसे ठीक करना चाहिए, लेकिन आप error_reporting के साथ त्रुटियों की दृश्यता को नियंत्रित कर सकते हैं। आप अपने समारोह कॉल के सामने एक @ डाल सभी त्रुटि संदेशों को दबाने के लिए कर सकते हैं

error_reporting(E_ERROR | E_PARSE); 
+32

'E_ALL^​​E_WARNING', चेतावनियों के अलावा सभी त्रुटि रिपोर्टिंग को सक्षम करने, 'त्रुटि_ रिपोर्टिंग' के लिए तर्क की बेहतर पसंद की तरह लगता है। –

+0

आम तौर पर मैं सहमत हूं, मेरे मामले में चेतावनी संदेश उत्पन्न करना व्यवहार था क्योंकि यह मेरे यूनिट परीक्षणों का हिस्सा था। – pgee70

5

आप error_reporting का उपयोग करके चेतावनी को दबा सकते हैं लेकिन आपकी स्क्रिप्ट को पहले स्थान पर ठीक करने का सबसे बेहतर तरीका है।

यदि आप नहीं जानते हैं कि, अपना प्रश्न कैसे संपादित करें और हमें प्रश्न में पंक्ति और प्रदर्शित होने वाली चेतावनी दिखाएं।

+1

मैं error_reporting इस्तेमाल स्क्रिप्ट की कोई जरूरत नहीं हल लॉग (0); – Alireza

+7

सफाली, आपको समस्याओं को ठीक करना चाहिए, फिर अनदेखा नहीं करना चाहिए। – Sampson

+2

सफाली, क्योंकि आपके पास PHP में निश्चित रूचि है, अपने आप को एक पक्ष बनाओ और उस स्क्रिप्ट को ठीक करने में देखें। –

79

: चेतावनी संदेश छोड़ने के लिए, आप की तरह कुछ इस्तेमाल कर सकते हैं।

@yourFunctionHere(); 
+3

यह सिर्फ त्रुटि को छुपाता है, यह अभी भी हो रहा है। त्रुटियां PHP को धीमा कर देती हैं, इसलिए यदि संभव हो तो त्रुटि को ठीक करना सबसे अच्छा है। जब त्रुटि नहीं होती है तब भी @ कोड का उपयोग धीमा कर देता है। http://vega.rd.no/articles/php-performance-error-suppression – dprevite

+29

कभी-कभी (दुर्भाग्य से) आपके पास वास्तव में कोई विकल्प नहीं है। उदाहरण के लिए, PHP फ़ंक्शन parse_url() "गंभीर रूप से विकृत" URL के लिए चेतावनियां उत्पन्न करता है - जो तर्कसंगत रूप से एक बग है क्योंकि फ़ंक्शन इस मामले में गलत लौटाता है। तो आपको या तो अपने प्रोग्राम आउटपुट में इन PHP चेतावनियों को सहन करना होगा (पार्सर/वैलिडेटर अनुप्रयोगों के लिए अस्वीकार्य हो सकता है), चेतावनी को किसी भी तरह दबाएं, या यूआरएल के लिए अपने स्वयं के पार्सर/सत्यापनकर्ता लिखकर टूटी हुई PHP व्यवहार के आसपास काम करें। इस मामले में, मैं @ चुनता हूं। – Peter

+1

महत्वपूर्ण: इस विधि का उपयोग करें iff (1) आप उस समस्या को ठीक नहीं कर सकते जो चेतावनी उत्पन्न करता है और न ही (2) अंतिम उपयोगकर्ताओं से php error_reporting के माध्यम से अपनी चेतावनियों को छुपाता है ... आपके डेवलपर्स से चेतावनियां छिपाना कोई समाधान नहीं है। –

28

चेतावनी को दबाने के लिए, जबकि अन्य सभी त्रुटि रिपोर्टिंग सक्षम छोड़ने: वास्तव में इस सवाल का जवाब नहीं

error_reporting(E_ALL^E_WARNING); 
9

, लेकिन मुझे लगता है कि यह कुछ स्थितियों में एक बेहतर समझौता है: मैं एक था

किसी तृतीय-पक्ष लाइब्रेरी में printf() कथन के परिणामस्वरूप चेतावनी संदेश। मुझे पता था कि वास्तव में क्या कारण था - एक अस्थायी काम-आसपास जबकि तीसरे पक्ष ने अपना कोड तय किया था। मैं मानता हूं कि चेतावनियों को दबाया नहीं जाना चाहिए, लेकिन मैं स्क्रीन पर पॉप-अप चेतावनी संदेश के साथ क्लाइंट को अपना काम प्रदर्शित नहीं कर सका। मेरा समाधान:

printf('<div style="display:none">'); 
    ...Third-party stuff here... 
printf('</div>'); 

चेतावनी पृष्ठ स्रोत में अभी भी मुझे अनुस्मारक के रूप में था, लेकिन ग्राहक के लिए अदृश्य।

+4

व्यक्तिगत रूप से, मैं ['ob_start()'] (http://php.net/manual/en/function.ob-start.php) और ['ob_end_clean()'] (http: // php। नेट/मैनुअल/एन/function.ob-end-clean.php) इसके बजाए। इस तरह सामान को ब्राउज़र पर भी भेजा नहीं जाता है (जो यह यहां करता है)। – h2ooooooo

+6

यही कारण है कि मैंने "कुछ स्थितियों" को शामिल किया, "चेतावनियों को दबाया नहीं जाना चाहिए" और "मुझे अनुस्मारक"। – DaveWalley

+1

मुझे और अधिक वोट देने से पहले, कृपया मेरा उत्तर पढ़ें। नोट "थर्ड-पार्टी", "समझौता" और उपरोक्त टिप्पणी। मैंने यह जवाब तब जोड़ा जब किसी और स्थिति में मैं उसी स्थिति में था, और उस विशिष्ट परिस्थिति में, यह मुझे बचाया, जबकि अन्य सभी उत्तरों उतने अच्छे नहीं थे। अगली बार मैं सहायक होने के बारे में दो बार सोचूंगा। – DaveWalley

15

आप चेतावनी को दिखाने के लिए और साथ ही त्रुटियों का उपयोग

// Turn off all error reporting 
error_reporting(0); 

Error Reporting - PHP Manual

4

मुझे लगता है कि बेहतर समाधान .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 
4

कोर Php में के लिए निर्देशों हैं संदेश सेट error_reporting (0) आम के शीर्ष पर फ़ाइल या अलग-अलग फ़ाइल में शामिल हैं।

WP-config.php फाइल में कोड निम्नलिखित

Wordpress hide Warnings and Notices ऐड में

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); 
1

आप चेतावनी और कुछ अन्य त्रुटि प्रकारों (उदाहरण के लिए, नोटिस), जबकि अन्य सभी त्रुटियों को प्रदर्शित करने, आप कर सकते हैं को दबाने के लिए चाहते हैं करें:

error_reporting(E_ALL & ~E_WARNING & ~E_NOTICE); 
0

मैं इसे अपने PHP में ऐसा करता हूं।आरं:

error_reporting = E_ALL & ~ E_WARNING & ~ E_NOTICE & ~ E_STRICT & ~ E_DEPRECATED

कौन सा केवल घातक त्रुटियों और कोई चेतावनी

+0

यदि यह कोई उत्तर नहीं है तो इसे या तो टिप्पणी के रूप में पोस्ट किया जाना चाहिए या अन्य प्रश्न – Robert

+0

रॉबर्ट। यह एक उत्तर है। – navid

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