2010-08-14 7 views
14

कभी कभी इस तरह बातें होती हैं:अपवाद स्टैक ट्रेस में लंबे तर्कों के हिस्सों को बंद करने के PHP को कैसे अक्षम करें?

#0 /some/path(1): Class_Name->exception_trigger() 
#1 /some/other/path(5): get_to('/some/long/path/tha...') 

कैसे मैं सब कुछ के लिए पूरी बहस को देखने के लिए मिलता है?

उत्तर

11

आपको बेजोड़ अपवाद हैंडलर को प्रतिस्थापित करना होगा। उदाहरण: यदि आप आप specify the length and number of variables कर सकते हैं इसे बाहर थूक xdebug उपयोग कर रहे हैं

 
#0 /home/glopes/a.php(21): a('loooooooooooooooooooooooooooooooooong argument') 
#1 /home/glopes/a.php(24): b() 
+1

ध्यान रखें कि $ frame ['file'] हमेशा परिभाषित नहीं किया जाता है, इसलिए आपको इसे पहले जांचना होगा। उस मामले में PHP के स्टैक डम्पर रिटर्न '[आंतरिक फ़ंक्शन]'। साथ ही, आप यह देखना चाहेंगे कि $ फ्रेम ['वर्ग'] परिभाषित किया गया है और फ़ंक्शन एक सदस्य फ़ंक्शन होने पर भी डंप हो सकता है। – DaveBurns

5

:

function exception_handler($exception) { 
    $i = 0; 
    foreach ($exception->getTrace() as $frame) { 
     echo sprintf("#%d %s(%d): %s(%s)\n", 
      $i++, $frame["file"], $frame["line"], 
      $frame["function"], 
      implode(", ", array_map(
       function ($e) { return var_export($e, true); }, $frame["args"]))); 
    } 
} 

set_exception_handler('exception_handler'); 

अब आप की तरह कुछ मिल जाएगा।

+0

+1 xdebug – NullUserException

+0

सुझाव देने के लिए अच्छा विचार है, लेकिन यह उत्पादन के लिए नहीं है जहां हम आमतौर पर अक्षम हैं। –

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