2012-12-19 13 views
6

मैं एक कस्टम के साथ निर्मित php shutdown_function को प्रतिस्थापित करने का प्रयास कर रहा हूं।register_shutdown_function() अभी भी मूल त्रुटि संदेश आउटपुट

यह पूरी तरह से काम करता है, हालांकि, यह अभी भी मेरे नए त्रुटि संदेश के ऊपर मूल त्रुटि (त्रुटि में निर्मित) आउटपुट करता है।

<?php 
    function shutdown_output() { 
     $error = error_get_last(); 
     if($error !== NULL) { 
      echo "ERROR"; 
      exit(); 
     } else { 
      echo "NO ERROR"; 
     } 
    } 

    // Set the error reporting: 
    register_shutdown_function('shutdown_output'); 

    // test.php does not exist, just here to get a critical error 
    require_once("test.php"); 

    ?> 

कोई विचार?

+0

यदि आपने PHP की अपनी त्रुटि रिपोर्टिंग बंद नहीं की है तो आश्चर्यचकित नहीं है। ['error_reporting (0)'] (http://php.net/manual/en/function.error-reporting.php) –

+0

आपको 'error_reporting (0);' और 'ini_set ('display_errors' भी सेट करना होगा, 0); इसके लिए मूल त्रुटि संदेश आउटपुट नहीं करना है। – shadyyx

उत्तर

3

जैसा कि पहले से ही टिप्पणियों में उल्लेख किया गया है, register_shutdown_function का उपयोग अंतर्निहित त्रुटि हैंडलिंग को ओवरराइड करने वाला नहीं है (उसी तरह set_error_handler या तो नहीं है)।

यदि आप मूल संदेश देखना नहीं चाहते हैं, तो में display_errors = 0 का उपयोग करके उन्हें आउटपुट अक्षम करें। या ini_set('display_errors', 0); का उपयोग कर अपनी स्क्रिप्ट में फ्लाई पर।

+0

"वैसे ही 'set_error_handler' या तो नहीं है": लेकिन [मैनुअल] (http://php.net/manual/en/function.set-error-handler.php) कहता है: "मानक PHP त्रुटि हैंडलर को 'error_types' द्वारा निर्दिष्ट त्रुटि प्रकारों के लिए पूरी तरह से बाईपास किया जाता है जब तक कि कॉलबैक फ़ंक्शन' FALSE' 'नहीं लौटाता है? –

+0

@AlvinWong शायद मैंने जो कहा था वह भ्रामक था, 'set_error_handler' केवल' E_USER_ * '(और कुछ अन्य) त्रुटियों को संभालता है, अन्य मामलों में डिफ़ॉल्ट हैंडलर का उपयोग किया जाएगा। –

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