That message means PHP hit a fatal error, almost always in a plugin, a theme or custom code. Here's how to find the cause in minutes with recovery mode or the debug log, fix it, and stop it coming back.
The message means PHP stopped with a fatal error, and WordPress hid the details from visitors. The cause is usually a plugin, a theme or custom code, often right after an update. Work through it in this order:
Since WordPress 5.2, a fatal error no longer leaves a blank page. Before that, a broken plugin usually caused the “white screen of death”. Now WordPress catches the error and visitors see There has been a critical error on this website. In wp-admin and on the login page the message adds Please check your site admin email inbox for instructions.
At the same time WordPress turns on recovery mode. It does this for fatal PHP errors during a normal page load, not for errors in scheduled tasks. The usual causes:
Look for an email from your site with the subject Your Site is Experiencing a Technical Issue. It names the plugin or theme that caused the error, quotes the error, and contains a link that logs you in with that plugin or theme paused. The link is valid for one day.
The pause only covers your session, so visitors keep seeing the error until you deactivate or fix the plugin. The email often lands in spam or never arrives: the error can stop WordPress before an email plugin loads, so the message goes straight from the server.
The debug log records the exact error, including the file it came from. Open wp-config.php over SFTP or your host’s file manager and add these lines above the line that says That’s all, stop editing!:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );Reload the page that shows the error, then open wp-content/debug.log. The last line that starts with PHP Fatal error names the culprit: a path under wp-content/plugins/ points to that plugin’s folder, and one under wp-content/themes/ to the theme.
The WordPress handbook warns that debug mode is meant for testing, not live sites, and on most hosts anyone who knows the address can open debug.log. Set WP_DEBUG back to false and delete the log as soon as you have the error.
If you can reach wp-admin through recovery mode, deactivate it there. If you can’t, there are two other ways:
wp plugin deactivate plugin-slug --skip-plugins --skip-themes
When the log doesn’t point to one plugin, switch them all off and bring them back one by one. Deactivate every plugin from the Plugins screen, rename the whole plugins folder, or run:
wp plugin deactivate --all --skip-plugins --skip-themesIf the site loads, reactivate plugins one at a time and reload after each. The one that brings the error back is the cause. With every plugin off, features such as checkout and forms stop working too, so test at a quiet time or on a staging copy.
An error that says Allowed memory size of … bytes exhausted means PHP ran out of memory. Raise WordPress’s limit in wp-config.php; your host’s own PHP limit can still cap it:
define( 'WP_MEMORY_LIMIT', '256M' );If the error started when your host changed PHP versions, a plugin or theme may not support the new one. Update it, or switch PHP back in your hosting panel until the developer ships a fix. WordPress recommends PHP 8.3 or newer.
If a recent change broke the site and you can’t find which one, restore the last good backup from your host or your backup plugin. Content added since that backup is lost, so export anything new first if you can.
If WordPress’s own files are damaged, WP-CLI can check them against the official copies and re-download core without touching wp-content. Dashboard > Updates also has a button to re-install the current version:
wp core verify-checksums
wp core download --force --skip-contentStill stuck? Ask your host for the PHP error log from the server. Many show it in the control panel, and it records errors that happen before WordPress can write its own log.
WPOS can’t repair a site that won’t load. Its agent works inside wp-admin, so when every page shows the critical error, start with recovery mode or the steps above. Where it helps is the routine that prevents the next one: the agent checks its own render with a browser screenshot before it reports a change as done, and the free trial comes with a staging sandbox next to the live site for trying updates first. A check after updates becomes one request:
“Open the home, pricing and contact pages and every page in the main menu, take a screenshot of each, and list any that show an error.”
WPOS is our product, so weigh this section accordingly; you can try it free for 30 days with 5,000 credits, a live site plus a staging sandbox, and no card.
PHP hit a fatal error while building the page, and WordPress replaced the technical details with this message. The cause is usually a plugin, a theme or custom code.
The error can stop WordPress before an email plugin loads, so the message is sent straight from the server and often lands in spam or is blocked. Check spam, then use the debug log instead.
One day. WordPress also sends at most one of these emails a day by default, so if the link has expired, use the debug log or rename the plugin's folder.
It's the same kind of problem. Before WordPress 5.2 a fatal error usually showed a blank white page; now WordPress shows this message and emails the site admin.
No. Posts, pages and settings stay in the database; the error only stops pages from loading. Take a backup before you start fixing, especially before you restore anything.
If the error started right after a change you can name, undoing that change is faster and keeps newer content. Restore a backup when you can't find the cause or the files themselves are damaged.
WPOS puts an AI agent inside wp-admin on the sites you already run, on any host, and it checks its own work. Free for 30 days: 5,000 credits, a live site plus a sandbox, no card.
Start free