|
Prev: How can i get the location of an exit()/die() from within register_shutdown_function()?
Next: беседки с уникальным встроенным грилем для дачи А
From: Chris on 16 Jul 2008 04:33 Mathijs van Veluw wrote: > Hello there, > > I have an shutdown function to catch fatal-errors etc.. > Now when there is an exit() somewhere i get an empty message from > get_last_error(). > I want to know the location of this exit() or die(). > > Is there a way to get the file and line-number from where the exit/die > originated? debug_backtrace ? -- Postgresql & php tutorials http://www.designmagick.com/
From: Mathijs van Veluw on 16 Jul 2008 06:00 Chris wrote: > Mathijs van Veluw wrote: >> Hello there, >> >> I have an shutdown function to catch fatal-errors etc.. >> Now when there is an exit() somewhere i get an empty message from >> get_last_error(). >> I want to know the location of this exit() or die(). >> >> Is there a way to get the file and line-number from where the exit/die >> originated? > > debug_backtrace ? > This won't work from within the register_shutdown_function() function. This because the scope is cleared, and the debug_backtrace starts from within the register_shutdown_function() function.
From: Mathijs van Veluw on 16 Jul 2008 09:41 Eric Butera wrote: > On Wed, Jul 16, 2008 at 3:23 AM, Mathijs van Veluw > <mathijs.van.veluw(a)smscity.com> wrote: >> Hello there, >> >> I have an shutdown function to catch fatal-errors etc.. >> Now when there is an exit() somewhere i get an empty message from >> get_last_error(). >> I want to know the location of this exit() or die(). >> >> Is there a way to get the file and line-number from where the exit/die >> originated? >> >> Thx in advance. > > The way I handle this is by throwing exceptions in my code. So let's > say that there is a db connection/query failure for whatever reason. > Instead of using query() or die() which is not user friendly, I throw > an exception which bubbles up. Once it hits the top then I can catch > it, log it accordingly, and show the user a friendlier error page > saying Oops! > > With an exception you get exactly what you want, a full-blown stack > trace complete with paths, line numbers etc. You also get the ability > to be graceful about what you show to the end user. > > ...but I have the feeling that you're already dealing with a situation > in lots of existing code. Perhaps you could combine some suggestions > in this thread and replace your die/exit statements with a custom > function which logs a debug_backtrace() and then really dies, but > gracefully of course. :) > > As an aside, if I were to see some jibberish about a query and line > numbers when I click a link I'd leave that site. (And for the > archives) It is a security vuln to show full file paths to an end > user. If someone is tampering with your system we shouldn't give them > any more information than they can already get. Well i don't use 'OR die()' stuff. But exceptions. For some reason from within the register_shutdown_function() function i get an empty error message. This only occurs, as far as i know, when there is an exit somewhere. I want to trace where this comes from. But i think that this isn't possible, as i looked on the web and there arn't any solutions. Thx for the help.
From: Mathijs van Veluw on 16 Jul 2008 10:00
Eric Butera wrote: > On Wed, Jul 16, 2008 at 9:41 AM, Mathijs van Veluw > <mathijs.van.veluw(a)smscity.com> wrote: >> Well i don't use 'OR die()' stuff. But exceptions. >> >> For some reason from within the register_shutdown_function() function i get >> an empty error message. >> This only occurs, as far as i know, when there is an exit somewhere. >> >> I want to trace where this comes from. >> >> But i think that this isn't possible, as i looked on the web and there arn't >> any solutions. >> >> Thx for the help. > > Well if this is a very specific issue that you're trying to resolve > perhaps you could try and figure out how the user triggered the error. > You could just save the remote address and request uri, do some > access log searching and re-produce the path the user took through > your site. This has been a helpful technique for me several times. > One of the main problems for me is that I know how to use the systems > I build, so I wouldn't click on stuff in the weird order some users > do. Well it is an cronjobed php script that executs several other scripts depending on the time. Something within those cronjobs triggers the shutdown function without an exit, which i find very strange. I think i have to debug it to trace the exact steps what its doing, because there is no exit within that script. |