2011-12-15 7 views
8

के लिए काम नहीं करता है मेरे पास एक साधारण कस्टम त्रुटि हैंडलर है जो एक त्रुटि लॉग फ़ाइल में कुछ उपयोगी डीबग इंफोस लिखता है।set_error_handler() FATAL त्रुटि

यह सब कुछ के लिए काम है लेकिन यह FATAL त्रुटि के लिए ट्रिगर नहीं किया गया है।

इसे हल करने का कोई तरीका?

वर्तमान में इस परिस्थिति मैं एक बंद समारोह भी है कि जाँच करता है error_get_last()

+4

[ 'निम्न त्रुटि प्रकार एक उपयोगकर्ता परिभाषित समारोह के साथ संभाला नहीं जा सकता: E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING, और E_STRICT के सबसे फ़ाइल जहां set_error_handler() called.' है में उठाया] (http: //us.php.net/set_error_handler) – animuson

+1

यह प्रश्न इस लिंक को याद करता है: [PHP: कस्टम त्रुटि हैंडलर - हैंडलिंग पार्स और घातक त्रुटियां] (http://stackoverflow.com/q/1900208/367456)। – hakre

उत्तर

16

नहीं पंजीकृत किया है बायपास करने के लिए, कि बस set_error_handler() की एक सीमा है, यह सभी त्रुटियों को संभाल नहीं करता है।

निम्न त्रुटि प्रकार एक उपयोगकर्ता परिभाषित समारोह के साथ संभाला नहीं जा सकता: E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING, और E_STRICT के सबसे फ़ाइल जहां set_error_handler() कहा जाता है में उठाया।

register_shutdown_function() और error_get_last() एक सभ्य कामकाज है।

+0

हम इस तरह से पीछे हटने में असमर्थ हैं ... – Loenix

+0

क्या आप register_shutdown_function() और error_get_last() का उपयोग करने के उदाहरण के रूप में काम कर सकते हैं, मैं एक के बारे में नहीं सोच सकता। –

4

इसे हल करने के लिए केवल हैकिश तरीके हैं, उदा। register_shutdown_function() का उपयोग करके और फिर उस फ़ंक्शन के अंदर कोई त्रुटि हुई है या नहीं।

PHP के कारण log_errors किसी कारण से है, तो आप PHP कोड किसी भी को कस्टम कोड की एक पंक्ति के बिना syslog या logfile में त्रुटि कर सकते हैं। तो इस प्रयोजन के लिए set_error_handler() का उपयोग करने की आवश्यकता नहीं है और जब तक आपको आवश्यकता न हो, तब तक टालना चाहिए एक स्टैकट्रैस

+0

बेशक मुझे अपनी पहली पोस्ट – dynamic

+0

में वर्णित स्टैकट्रैक और/या अन्य डीबग इंफोस की आवश्यकता है, कृपया हैकिंग वर्कअराउंड का उदाहरण कृपया –

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