On 1 September 2010 13:38, <freeman3@xxxxxxxxxx> wrote: > Thanks! > I didn't notice the register_shutdown_function function. > But it executes always I want to run it only to track fatal error. Also I > can't get the backtrace properly:( I can't use 5.3 so I guess it works > differently in 5.2 > > Richard Quadling wrote: > >> On 31 August 2010 09:49, Paul Freeman <freeman3@xxxxxxxxxx> wrote: >>> When fatal error occurs is it possible to output also the backtrace in >>> the error log? The simple error message with file line only is quite >>> useless... >> >> <?php >> namespace baz; >> >> set_error_handler( >> function($ErrNo, $ErrStr, $ErrFile, $ErrLine, $ErrContext){ >> echo 'An error occurred.', PHP_EOL; >> var_export(debug_backtrace(true)); >> >> // Allow PHP to continue executing. >> return false; >> }, >> -1 >> ); >> >> register_shutdown_function( >> function(){ >> echo 'We died a terrible death.'; >> var_export(debug_backtrace(true)); >> } >> ); >> >> function bar() { >> echo 'In ', __FUNCTION__, PHP_EOL; >> echo 1 / 0; // Divide by zero warning. >> foo(); >> } >> >> function foo() { >> echo 'In ', __FUNCTION__, PHP_EOL; >> $a = \SNAFU; // Fatal error >> } >> >> bar(); >> ?> >> outputs ... >> >> In baz\bar >> An error occurred. >> array ( >> 0 => >> array ( >> 'file' => 'Z:\\bad.php', >> 'line' => 24, >> 'function' => 'baz\\{closure}', >> 'args' => >> array ( >> 0 => 2, >> 1 => 'Division by zero', >> 2 => 'Z:\\bad.php', >> 3 => 24, >> 4 => >> array ( >> ), >> ), >> ), >> 1 => >> array ( >> 'file' => 'Z:\\bad.php', >> 'line' => 33, >> 'function' => 'baz\\bar', >> 'args' => >> array ( >> ), >> ), >> ) >> Warning: Division by zero in Z:\bad.php on line 24 >> In baz\foo >> >> Fatal error: Undefined constant 'SNAFU' in Z:\bad.php on line 30 >> We died a terrible death.array ( >> 0 => >> array ( >> 'function' => 'baz\\{closure}', >> 'args' => >> array ( >> ), >> ), >> ) >> >> So, it looks like extension or a core mod only. >> > > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > > No. I think you've missed the point. Neither set_error_handler() or register_shutdown_function() report the fatal stack. This would need to be in an extension or a mod to the core code. Userland code can't access it. The stack trace shown in the shutdown function is just the shutdown function, not why there is a shutdown. -- Richard Quadling Twitter : EE : Zend @RQuadling : e-e.com/M_248814.html : bit.ly/9O8vFY -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php