Re: Re: [PHP] Error recovery - fatal errors
| From: | Peter Lind | 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>