WordPress troubleshooting

The WordPress white screen of death

A completely blank page with no error and no HTML. PHP stopped mid-request and the message went to a log you have not read yet.

(a blank white page, no text at all)

Short answer

The screen is blank because display_errors is off, not because there is nothing to say. Switch on WP_DEBUG_LOG, reload the page once, and read wp-content/debug.log - the last entry names the file and line that stopped.

Diagnosis

What causes it, most likely first.

Work down the list. Each check is written to rule its row in or out before you change anything, because the fixes below it are different and a guess costs more than a command.

CauseHow to checkFix
A fatal PHP error in a plugin or themeThe log entry starts with "PHP Fatal error" and names a file under wp-content. That path is the answer.Deactivate the named plugin or switch theme. If the file belongs to a theme, switching to a default theme restores the site while you look at it.
The memory limit was reachedThe log says "Allowed memory size … exhausted". A blank page and an out-of-memory kill look identical from the browser.Raise the limit enough to load the page, then find what needed the memory. The limit is a symptom, not the cause.
Only wp-admin is whiteThe front end renders and the dashboard does not, or the reverse. That asymmetry points at admin-only code.The fatal is in an admin-only path. Rename the plugins directory over SFTP to get back in, then reactivate one at a time.
OPcache is serving a stale compiled fileThe site was fine, a file was edited, and now it is blank - and the error names a line that no longer exists in the file.Flush OPcache. Editing PHP in place without a flush leaves the compiled version and the source disagreeing.
A syntax error in a file you just editedphp -l on the file you touched last reports the error without needing WordPress at all.Fix the syntax or restore the previous copy. A stray brace in wp-config.php or functions.php takes down every page at once.
Walkthrough

Fixing it, step by step.

Commands assume WP-CLI and shell access. Where you have neither, each step says what it is doing so it can be done from the dashboard or over SFTP instead.

  1. Turn the message back on

    Log rather than display: you want the detail without publishing a stack trace to visitors.

    wp config set WP_DEBUG true --raw
    wp config set WP_DEBUG_LOG true --raw
    wp config set WP_DEBUG_DISPLAY false --raw
  2. Reload the blank page once, then read the log

    The last entry is yours. Everything above it may be old noise.

    tail -n 30 wp-content/debug.log
  3. If it named a plugin, take that plugin out of the request

    Deactivating by name is enough; you do not need to delete anything.

    wp plugin deactivate the-named-plugin
  4. If you cannot reach wp-admin at all, disable plugins from the filesystem

    Renaming the directory makes WordPress find no plugins, which is enough to get the dashboard back.

    mv wp-content/plugins wp-content/plugins.off
  5. Turn debugging back off when you are done

    A debug log left on grows without limit and records paths you would rather not publish.

    wp config set WP_DEBUG false --raw
On MagicWP

What the platform takes off the list.

The white screen is a configuration accident rather than a WordPress feature: PHP is told not to display errors and nothing is told to log them. Here the log is on and writable from the first request, so a fatal error is a line you can read rather than an empty page. Cloning the site before an update means the plugin that fatals does it on a copy nobody is visiting.

FAQ

Questions, answered.

Why is the page blank instead of showing the error?
Because display_errors is off, which is correct for a production site. The message still exists - it goes to a log. Enabling WP_DEBUG_LOG points it at wp-content/debug.log without showing anything to visitors.
The front end is fine but wp-admin is white. Why only there?
The fatal is in code that only runs in the dashboard. Plenty of plugins register admin-only screens, so a bug in one of those never touches a visitor and takes out every editor.
I fixed the file but the page is still blank.
Check whether OPcache is still holding the old compiled copy. If the error names a line number that no longer matches the file you are looking at, that is what you are seeing.
Can I find the culprit without any command-line access?
Yes, over SFTP. Rename wp-content/plugins to something else to disable them all at once, confirm the site returns, then rename it back and disable plugins individually from the dashboard.
Related

If that was not it.

These fail in ways that look similar from the browser.