Anyone who has done any development with PHP will be familiar with the infamous White Screen of Death; a blank browser window indicating that something horrible has gone wrong. A common cause, for me at least, is making a method call on a null object – easy to do in an object oriented architecture.
The exact reason as to why your script has gone splat will be reported in the log file, but from a UX standpoint, giving a blank screen to your customers is far from ideal. It is particularly problematic in complicated platforms like Elgg and Known, which use output buffering and have a plugin architecture.
Here’s a quick bit of code which can catch many (all?) of these fatal errors, and at least echo something. A variation of this is already in Known. Place the code somewhere towards the start of your script…
register_shutdown_function(function () {
        $error = error_get_last();
        if ($error["type"] == E_ERROR) {
            
            // If you use output buffering, chuck away any existing buffer
            ob_clean();
            // Set an appropriate HTTP error code
            http_response_code(500);
            // Construct your error message
            $error_message = "Fatal Error: {$error['file']}:{$error['line']} - \"{$error['message']}\", on page {$_SERVER['SERVER_NAME']}{$_SERVER['REQUEST_URI']}";
            // Display a friendly message to your customers, giving them an option to email you about it!
            echo "Sorry, FizzBuzz experienced a problem!
";
            echo "FizzBuzz experienced a problem with this page and couldn't continue. The technical details are as follows:";
            echo "$error_message";
            echo "If you like, you can email us for more information
.";
            // You'll also want to write the error to your log
            error_log($error_message);
            exit;
        }
});
Hope this is useful to you!
 
 
   
  