Could you please provide the complete code needed to reproduce the issue? Which error are you trying to catch exactly? You should include that in the code, otherwise is difficult to help you.
You can test it with any fatal error, Karl. For example, if I add the line:
anywhere in any page, the page will render partially up to this line, then write the error in my log correctly ("Call to undefined function doesnt_exist()"),then stop immediately with a partially rendered page. It never redirects. If I place the undefined function at the top of the page, it will write the error in the log correctly but stop on a blank page. In my development environment it follows the redirect to the custom error page each time. Note that I am turning on buffering with ob_start(), before anything is output.
Originally Posted by karl94
Why did you include that if inside fatalHandler? That way you can't catch parse errors, for instance.
I followed the links you provided to Stack exchange above, and from what is said on that site, the fatal handler can't be used to catch parse errors, unless the error occurs in an included file. I would have to make all my site pages includes in some other page for that to work. In fact, I tested this by changing "E_ERROR" to "E_PARSE", in the fatalHandler() above, then intentionally leaving out a semi-colon. When I did this the fatal handler did not work in my development environment (it did not log anything or redirect anywhere). I was also told on Stack Exchange that when I register a function using register_shutdown_function, if I don't give the function any constraints (such as the if statement above), PHP will invoke the function every time my script finishes executing. So the purpose of the if statement is to stop it from running when the error is not fatal, or there is no error at all.
Last edited by huluganfantasy; 09-13-2016 at 06:16 AM.
Please read my post again Karl. I am not "hiding" any problems. I want errors recorded in a log. I can easily check the log and fix any errors. I do not want errors displayed because it puts a map of my site folders, folder names and server-side code in every viewer's browser. That is a security risk, AND very unprofessional. Thanks for your help.
EDIT It's also not efficient, because I won't see errors other site visitors encounter, unless those errors are recorded in a log. I can't see their browser
Security through obscurity isn't security at all. Sorry for the bump, but that's security 101.