From: Chris on
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
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
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
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.