Skip to content
CH SCShop classdrupal · intermediate · ~45 min · 6 steps

How to fix the Drupal white screen of death

Turn a blank Drupal page back into an error message you can act on, work through the usual culprits, and get the site rendering again.

August 10, 2026 · by Dane Petersen

A white screen means Drupal hit a fatal PHP error and, sensibly, chose not to tell the whole internet about it. The site isn’t gone — it’s just not talking. Your job is to get it talking to you, read what it says, and fix that one thing. You’ll need drush, SSH access, and to know where your error logs live.

Turn the errors back on

Drupal hides errors from visitors on purpose. Temporarily un-hide them for yourself — add this to the bottom of settings.php (or better, settings.local.php if you have one):

$config['system.logging']['error_level'] = 'verbose';
ini_set('display_errors', TRUE);
error_reporting(E_ALL);

Reload the page. Nine times out of ten, the white screen is now a specific error with a file name and a line number — and you can skip straight to acting on it.

Read the actual fatal in the log

If the screen is still blank, the error went to the logs instead. Check Drupal’s own log first:

drush watchdog:show --severity=Error --count=20

Then the PHP/web-server error log (its location is host-specific — the error logs lesson covers finding it). You’re looking for the first fatal, not the last: read the message, the file path, and especially which module’s directory the path runs through. That path is your suspect.

Rule out the disk-full and memory-limit classics

Two boring causes produce dramatic white screens, so clear them before blaming code:

df -h
php -i | grep memory_limit

A full disk means Drupal can’t write cache or temp files and dies quietly — free up space and the site often just comes back. Allowed memory size exhausted in the log means the PHP memory_limit needs a raise (256M is a reasonable floor for modern Drupal); set it in PHP’s config or ask your host.

Disable the suspect module from the command line

If the fatal points at a module, the admin UI is no help — it’s white too. Drush still works, because it bootstraps without rendering the broken page:

drush pm:uninstall MODULE_NAME

If drush itself fatals on that module, get the code back to a state where it parses: composer install restores a missing or mangled package, and git status shows you anything edited by hand. Fix the code first, then uninstall cleanly. Deleting a module’s folder while it’s still installed just trades one problem for a stranger one.

Rebuild the caches

Stale caches can keep serving the broken page after the cause is gone — or be the whole cause, if a deploy left them pointing at code that moved:

drush cache:rebuild

Cheap, safe, and occasionally the entire fix. Run it after every change you make in this process, not just once.

Verify, then turn error display back off

Load the front page, log in, click through a couple of admin screens and whatever pages earn the site its keep. Then — and this is the step people skip — go remove those three lines from settings.php and rebuild caches once more. Verbose errors on a live site hand out file paths and stack traces to anyone who asks, and you’ve already got what you needed from them. You’re done when the site renders, the log shows no new fatals, and the error display is back to quiet. Take a note of what the culprit was; white screens are repeat visitors, and the second diagnosis goes a lot faster than the first.

That's the lesson. Back to the shop for more — or if this is the chore your organization never gets to,that's literally what we're for.