Re: Re: [PHP] Error recovery - fatal errors

From: Date: Mon, 16 May 2011 20:34:02 +0000
Subject: Re: Re: [PHP] Error recovery - fatal errors
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-312814@lists.php.net to get a copy of this message
On 16 May 2011 22:14, Tim Streater <tim@clothears.org.uk> wrote: > On 14 May 2011 at 15:05, Peter Lind <peter.e.lind@gmail.com> wrote: > >> On 14 May 2011 12:33, Tim Streater <tim@clothears.org.uk> wrote: >>> I would like, in my app, to recover from as many run-time errors as possible, >>> so that I can tidy up. And unsolicited output generated by the standard error >>> system is really unhelpful as it becomes part of the ajax reply to the >>> browser. >>> >>> So I've added my own error handler, but it seems that I can't catch fatal >>> errors. The error in question comes from doing something like: >> >> Fatal errors are fatal - if you could recover from them, they wouldn't be >> fatal. > > Except that this error is arbitrarily designated as fatal when it need not be. A few days ago I > discovered register_shutdown_function as mentioned by someone today, and use that to pass E_ERRORs > on to my error handler (as declared by set_error_handler). That way I can log the error properly and > notify the user in a consistent manner. I've tested this by introducing some errors (e.g. > unitialised variables or setting $dbh to null) and these are all nicely picked up. You were trying to call a method on a non-object - how do you expect PHP to handle that if not with a fatal error? Anyway, good to hear you solved the issue - I misunderstood what you wanted to do (shut down in a proper fashion, not actually recover from the error) so I didn't think to mention this. * snip * >> You can avoid all problems with error output by turning off error >> displays in php.ini (set display_errors = off) - use error logging >> instead. That's the recommended setting for production servers. > > This is not a browser/webserver situation in the classic manner. In this case, the browser, PHP > code, and the instance of apache used are all running on the user's machine. The user just > thinks they are running a local application. You can call it production server or not, if you are having problems with error messages from php then you should turn off error display - which shouldn't get in the way of you showing your own error messages but will solve the problem mentioned. Regards Peter -- <hype> WWW: plphp.dk / plind.dk LinkedIn: plind BeWelcome/Couchsurfing: Fake51 Twitter: kafe15 </hype>

« previous php.general (#312814) next »