ExpressionEngine White Screen of Death

How to diagnose the problem when debug doesn't work

We all know that by editing the index.php or admin.php files and setting $debug = 1 should display errors.

Sometimes, this doesn't work and you're still staring at a "white screen of death".

In these cases, the code shown below, should work.

Paste this into the top of index.php or admin.php (depending on where you're getting the white screen)  and (in most cases) you'll finally see what's causing the problem.

ini_set('display_errors', 'On');
ini_set('html_errors', 0);
error_reporting(-1);
function ShutdownHandler() {
    if(@is_array($error = @error_get_last())) {
        return(@call_user_func_array('ErrorHandler', $error));
    };
    return(TRUE);
};
register_shutdown_function('ShutdownHandler');
function ErrorHandler($type, $message, $file, $line) {
    $_ERRORS = Array(
        0x0001 => 'E_ERROR',
        0x0002 => 'E_WARNING',
        0x0004 => 'E_PARSE',
        0x0008 => 'E_NOTICE',
        0x0010 => 'E_CORE_ERROR',
        0x0020 => 'E_CORE_WARNING',
        0x0040 => 'E_COMPILE_ERROR',
        0x0080 => 'E_COMPILE_WARNING',
        0x0100 => 'E_USER_ERROR',
        0x0200 => 'E_USER_WARNING',
        0x0400 => 'E_USER_NOTICE',
        0x0800 => 'E_STRICT',
        0x1000 => 'E_RECOVERABLE_ERROR',
        0x2000 => 'E_DEPRECATED',
        0x4000 => 'E_USER_DEPRECATED'
    );
    if(!@is_string($name = @array_search($type, @array_flip($_ERRORS)))) {
        $name = 'E_UNKNOWN';
    };
    return(print(@sprintf("%s Error in file %s at line %d: %s\n", $name, @basename($file), $line, $message)));
};
$old_error_handler = set_error_handler("ErrorHandler");

Remember - remove this code when you're done. Don't leave it lying around on a production system!

The above error handler code was copied from another post somewhere a few years ago and we can't remember where. If the original author gets in touch with us we'd be more than happy to give them credit here as it's got us out of a tricky situation more than once.