What is actually happening
The white screen of death and the generic 500 error are both WordPress’s way of saying that PHP hit a fatal problem and stopped. The usual causes are a plugin or theme that clashes with another or with your PHP version, a memory limit that is too low, a corrupted file after a failed update, or a damaged .htaccess file.
Step 1: check your inbox
Since version 5.2, WordPress often catches fatal errors and emails the site admin a recovery link that opens the dashboard with the faulty plugin paused. Check the admin email address, including spam, before doing anything more technical.
Step 2: turn on the error log
Connect by SFTP or your host’s file manager and open wp-config.php. Add these lines above the line that says to stop editing. They write errors to a file and hide them from visitors. Reload the page, then read wp-content/debug.log. It usually names the exact file and plugin that failed.
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );Step 3: rule out plugins
If you cannot get into the dashboard, rename the wp-content/plugins folder to plugins-off. This deactivates every plugin at once. If the site comes back, rename the folder back and disable the plugins one at a time, by renaming each one, until you find the culprit. Then update, replace or remove it. With WP-CLI it is a single command.
# Turn every plugin off, then check the site
wp plugin deactivate --all
# Turn them back on one at a time until it breaks
wp plugin activate plugin-slugStep 4: rule out the theme
If plugins are not the cause, rename your active theme’s folder. WordPress falls back to a default theme such as Twenty Twenty-Five, provided one is installed. If that fixes it, the theme is the problem, often after a PHP upgrade.
wp theme list
wp theme activate twentytwentyfiveStep 5: check PHP, memory and .htaccess
Confirm your PHP version in your host’s control panel against what your theme and plugins support, and raise the memory limit by adding one line to wp-config.php.
For a 500 error, rename .htaccess and load the site again. If it works, visit Settings, Permalinks and save to generate a fresh one, or paste in WordPress’s default rules.
define( 'WP_MEMORY_LIMIT', '256M' );# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPressStep 6: stop it coming back
Turn debugging off again, take a backup, and from now on apply plugin and theme updates on a staging copy first. Keeping the number of plugins low and updating regularly avoids most of these errors, and a care plan takes the routine off your plate.
Common questions
What causes the WordPress white screen of death?
A fatal PHP error, most often from a plugin or theme that conflicts with another or with your PHP version, an exhausted memory limit, or a file corrupted by a failed update.
How do I fix WordPress without access to the dashboard?
Use SFTP or your host’s file manager to rename the plugins folder, which deactivates all plugins, or the active theme folder, then reload. WP-CLI does the same with wp plugin deactivate --all.
Why do I get a 500 internal server error after an update?
Usually a damaged .htaccess file, a plugin that broke during the update or a PHP version the update no longer supports. Rename .htaccess first, then check the error log.
Is it safe to leave WP_DEBUG turned on?
Only on a test copy. On a live site keep WP_DEBUG_DISPLAY off so errors are never shown to visitors, and turn debugging off again once the problem is fixed.
Have a project in mind? I reply within a day or two.