Re: How can i get the location of an exit()/die() from within register_shutdown_function()?

From: Date: Wed, 16 Jul 2008 13:41:14 +0000
Subject: Re: How can i get the location of an exit()/die() from within register_shutdown_function()?
References: 1 2  Groups: php.general 
Request: Send a blank email to php-general+get-276912@lists.php.net to get a copy of this message
Eric Butera wrote:
On Wed, Jul 16, 2008 at 3:23 AM, Mathijs van Veluw <mathijs.van.veluw@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.

« previous php.general (#276912) next »