What a critical error actually means
Since WordPress 5.2, a white or grey screen with “There has been a critical error on your website” usually hides a PHP fatal error. Something in core, a plugin, or your theme called a function that no longer exists, hit a memory limit, or violated PHP 8 syntax rules.
The fix is almost never “reinstall WordPress”. You need the real error message, then you disable or update the file that triggers it. If you cannot open wp-admin, you do that through hosting file access, not the dashboard.
Step 1: Enable debug logging in wp-config.php
Open wp-config.php in your site root via hosting File Manager, SFTP, or SSH. Find the line that says “That’s all, stop editing!” and paste these constants above it. On a live site, log to file only and do not print errors to visitors.
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );
Reload the broken page once, then open wp-content/debug.log. The last lines usually name the plugin file and line number that fatals. If the log stays empty, your host may disable logging or the crash happens before WordPress boots. Check the hosting error log in cPanel, Plesk, or your provider’s dashboard as well.
Step 2: Use WordPress recovery mode
When a plugin or theme fatals, WordPress may email the site admin a recovery mode link. That link lets you access wp-admin with the offending extension paused. Follow it, log in, and deactivate the plugin from the Plugins screen.
- Check the inbox for your site admin email, including spam folders.
- If no email arrived, skip to FTP isolation below.
- After recovery, update or remove the plugin before reactivating it.
Step 3: Deactivate all plugins via FTP or file manager
Rename the plugins directory so WordPress cannot load any plugin PHP. This is the fastest way to prove a plugin conflict when admin is down.
- Connect with SFTP or open File Manager in hosting.
- Go to wp-content/
- Rename plugins to plugins.disabled
- Load the site and wp-admin again.
If the site works, rename the folder back to plugins and deactivate plugins one by one from admin, or rename individual plugin folders inside wp-content/plugins/ until the fatal returns. The last plugin you enabled is the culprit.
Step 4: Rule out the active theme
If disabling plugins does not help, switch themes at the file level. WordPress falls back to a default theme when the active theme folder is missing.
- Open wp-content/themes/
- Rename your active theme folder, for example mytheme to mytheme.off
- Ensure twentytwentyfour or another default theme folder still exists.
- Reload the site.
Step 5: Check PHP version and memory
Hosts migrate PHP versions without warning. Legacy plugins break on PHP 8.x. In hosting, temporarily switch PHP 8.2 to 8.1 or 7.4 only as a short test, not a long-term fix.
If logs mention memory exhausted, raise WP_MEMORY_LIMIT in wp-config.php:
define( 'WP_MEMORY_LIMIT', '256M' );
define( 'WP_MAX_MEMORY_LIMIT', '512M' );
When to stop DIY and hire help
Call a developer if the error persists after plugin and theme isolation, if the log points at WordPress core files you did not change, or if you are on a live shop and cannot afford trial-and-error. BugShield quotes critical error fixes at a confirmed price with a BugShield developer and secure Vault access.