Troubleshooting

"There Has Been a Critical Error on This Website" — How to Fix It

WordPress's generic fatal-error message, decoded — find the actual cause and get the site back up.

Quick Answer: The WordPress critical error message means a PHP fatal error stopped the site from loading — almost always a plugin, theme, or PHP version conflict, usually right after an update. Fastest fix: enable debug logging (WP_DEBUG_LOG in wp-config.php) to see the exact file and line causing it, or, if you need the site back up immediately, rename the /wp-content/plugins folder via FTP or your host's file manager to force-deactivate every plugin at once. If the site loads again, reactivate plugins one at a time to find the culprit.

Site Showing a Critical Error Right Now?

Tell us what's happening and we'll help you get it back up — or take it off your plate entirely going forward.

Why WordPress Shows This Instead of a Real Error

Since WordPress 5.2, a PHP fatal error no longer produces a blank white screen by default — it shows "There has been a critical error on this website" instead, along with a link to the WordPress.org troubleshooting page. That's an improvement over a silent white screen, but the message itself still doesn't tell you what actually broke. It's a symptom, not a diagnosis. The real cause is sitting in your server's PHP error log, and finding it is the first real step, not an optional one.

Step 1: Enable Debug Logging to See the Real Error

Connect to the site via FTP or your host's file manager and open wp-config.php in the site's root directory. Find the line that says /* That's all, stop editing! Happy publishing. */ and add these lines just above it:

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

Reload the site once, then check /wp-content/debug.log. It will contain the exact PHP fatal error — typically naming a specific plugin file and line number, for example a call to an undefined function inside a plugin that hasn't been updated for the current PHP version. That single log entry tells you exactly what to disable next, instead of guessing.

Step 2: If You Can't Even Reach wp-config.php Yet

If the critical error also blocks wp-admin and you don't have FTP access handy, WordPress 5.2+ automatically emails the site administrator a special "recovery mode" link the first time a fatal error occurs. Check the inbox tied to the admin account — that link lets you log in to a safe-mode wp-admin where the broken plugin or theme is visible but not active, so you can deactivate it through the normal dashboard instead of the file system.

Step 3: Force-Deactivate Plugins to Confirm the Cause

If a plugin is the cause — which it is in the large majority of critical-error cases — the fastest confirmation is renaming the /wp-content/plugins folder (to something like plugins-disabled) via FTP or your host's file manager. WordPress can't find any active plugins, deactivates them all, and the site typically loads again immediately. Rename the folder back to plugins afterward; every plugin will show as deactivated in wp-admin rather than actually removed.

From there, reactivate plugins one at a time, reloading the site after each one. The moment the critical error returns, you've found the plugin responsible. Update it, replace it, or contact its developer — don't just leave it deactivated indefinitely if the site depends on what it does.

Step 4: If It's the Theme, Not a Plugin

If deactivating every plugin doesn't resolve it, the theme itself is the likely cause. Via FTP, rename the active theme's folder inside /wp-content/themes. WordPress will automatically fall back to a default theme (like Twenty Twenty-Four) if it's present. If the site loads on the default theme, the problem is in your theme's code — often a function that assumes a plugin is active when it isn't, or a theme update that wasn't tested against your current plugin set.

Why This Keeps Happening After Updates

Critical errors cluster right after a core update, a PHP version bump, or a plugin update — because those are exactly the moments when previously-compatible code stops being compatible. A plugin that hasn't been updated in two years can work fine for months, then break the instant the server's PHP version is upgraded or a core update changes a function it depended on. The fix above gets the site back up after the fact. The way to stop it from happening in the first place is testing every update — core, plugin, and theme — on a staging copy of the site before it touches production, so a conflict like this gets caught before customers see a critical error instead of after — the same staging and validation process prevents most of the errors on this list.

Related Troubleshooting Guides

Martin Van Den Boogerd
Martin Van Den Boogerd
Founder & Owner, CriticalWP — background in cybersecurity and municipal government infrastructure
More about Martin →

Common Questions

It's WordPress's generic fatal-error message, shown instead of a blank white screen since WordPress 5.2. It means a PHP fatal error stopped the site from loading, almost always caused by a plugin, theme, or PHP version conflict. The message itself doesn't say which one — you have to enable debug logging to find out.
Enable WP_DEBUG_LOG in wp-config.php (or check your host's error log) and reload the page. The log will show the exact PHP fatal error, including the file and line number of the plugin or theme that triggered it. That's the fastest way to identify the cause instead of guessing.
Yes. If the error locks you out of wp-admin too, WordPress 5.2+ can email the site admin a special recovery mode link. If that doesn't arrive, you can rename the plugins folder via FTP or your host's file manager, which deactivates all plugins at once and typically restores access immediately.
Usually, yes, if a plugin is the cause, which it is in most cases. Rename the plugins folder to force-deactivate everything, confirm the site loads again, then reactivate plugins one at a time until the error returns — that identifies the specific plugin responsible.
A core, PHP, or plugin update can break compatibility with an older plugin or theme that wasn't built to handle the new code. This is exactly why updates should be tested on a staging environment before being applied to a live production site — it catches the conflict before customers see it.

Stop firefighting critical errors after every update.

Managed WordPress operations means every update is tested on staging before it touches your live site — so this error doesn't happen to your customers in the first place.