Your site was fine an hour ago. Now it returns a blank page, or that grey box announcing a critical error, and the dashboard will not load.
Learning how to solve WordPress fatal errors starts with one fact: the message already names the culprit. File path, line number, failing function.
Plugin conflicts caused 65% of WordPress technical malfunctions in 2025 (Digidop). The rest trace back to memory limits, PHP version jumps, or a snippet pasted into functions.php.
What this guide covers:
- Reading the debug log and the stack trace
- Regaining admin access when you are locked out
- Fixing plugin, theme, memory, and core file failures
- Tools that diagnose the crash in minutes
What Is a WordPress Fatal Error
A WordPress fatal error is a PHP failure that stops script execution completely. The server cannot finish building the page, so nothing renders. WordPress catches the failure and returns a critical error notice, a blank page, or a 500 response depending on the version and server setup.
PHP does not “try harder” after a fatal error. Execution halts on that line and everything queued behind it never runs.
That distinction matters because most site owners lump every red message into one bucket. A deprecation notice is noise. A fatal error is a dead site.
WordPress powers 43.4% of all websites, roughly 532 million properties (WP Zoom, July 2025). At that scale, the same handful of PHP failures repeats across millions of installs with the same file paths and the same fixes.
Fatal Error vs Critical Error vs White Screen of Death
Three names, one underlying event, different presentation layers.
Have you seen the latest WordPress statistics?
Discover the latest WordPress statistics: market share, security trends, performance data, and revenue insights that shape the web.
Check Them Out →| Term | What it actually is | Where you see it |
|---|---|---|
| Fatal error | A PHP-level error that stops script execution | debug.log, PHP/server error logs |
| Critical error | WordPress’s user-facing message indicating that a serious PHP error occurred | Browser, WordPress admin email |
| White screen | A page that produces no visible output, often because a fatal PHP error occurred while error display is disabled | Browser, blank/empty page |
The blank page that used to greet everyone was standard behavior before WordPress 5.2. Since the 5.2 “Jaco” release on May 7, 2019, core ships fatal error protection and replaces the blank output with the critical error notice most people see today (WordPress.org).
What the Recovery Mode Email Contains
Sent to: the address in Settings > General, plus the network super admin on multisite.
The message includes:
- The plugin or theme name that triggered the failure
- The raw PHP error type and message
- The file path and line number
- A secret login link into recovery mode
Recovery mode works by setting a cookie on your browser, not by tying itself to your user account (WordPress Core team, 2019). The link expires, so a 3 day old email in the spam folder gets you nothing.
What Causes WordPress Fatal Errors
Six causes account for nearly every WordPress fatal error: plugin conflicts, theme code failures, PHP memory exhaustion, PHP version incompatibility, corrupted core files, and interrupted updates. Plugin conflicts dominate the list by a wide margin.
Plugin conflicts represented 65% of technical malfunctions reported across WordPress sites in 2025 (Digidop, January 2026).
The math behind that is not mysterious. US WordPress sites run 21 plugins on average (SQ Magazine, 2025), and 59% of plugins in the directory, more than 34,000 of them, have gone over two years without an update (Fuad Al Azad case study, September 2025).
| Cause | Typical trigger | Error signature |
|---|---|---|
| Plugin conflict | Plugin update, activation, or PHP version change | File path inside /wp-content/plugins/ |
| Theme code | Custom snippet added to functions.php or another theme file | Parse error, syntax error, or fatal error |
| Memory exhaustion | Large imports, page builders, image processing, or WooCommerce operations | Allowed memory size exhausted |
| PHP version change | Hosting provider upgrades PHP or an incompatible plugin/theme is used | Call to undefined function, Class not found, or other compatibility errors |
| Corrupted WordPress core | Interrupted update, incomplete deployment, or damaged file transfer | File path inside /wp-admin/ or /wp-includes/ |
Version mismatch is the sneaky one. A plugin runs fine on PHP 7.4, throws warnings on 8.0, and crashes hard on 8.1 and above.
PHP 8.0 shipped with 48 backward-incompatible changes in core alone and 166 across the wider stack including extensions and libraries (Make WordPress Core, 2020). Functions like createfunction() were removed outright, and that function still appeared in over 5,500 plugins at the time of the transition (WP TechSupport).
Server-level triggers round out the list: exceeded memorylimit, exhausted maxexecutiontime, and missing PHP extensions such as mysqli or curl.
Custom code deserves its own mention. Direct edits to wp-config.php, snippets dropped into functions.php, and stray files in mu-plugins bypass every safety net WordPress has. There are narrow cases where touching core files is defensible, but a live production site is almost never one of them.
Timing clusters too. Fatal errors spike after core releases and after host-forced PHP upgrades, which is also when upgrade failures leave sites in a half-updated state.
What Are the Most Common WordPress Fatal Error Messages
Seven messages cover the majority of WordPress fatal errors: memory exhaustion, undefined function calls, function redeclaration, class not found, execution timeout, syntax errors, and headers already sent. Each one maps to a specific cause and a specific file path pattern.
Match your exact string before touching anything. The message names the culprit more reliably than guesswork does.
| Message | Likely cause | Path pattern |
|---|---|---|
| Allowed memory size of X bytes exhausted | PHP memory limit is too low, or code is consuming excessive memory | Any path; often appears in /wp-includes/ or a plugin/theme file |
| Uncaught Error: Call to undefined function | Function was removed/changed, required extension is missing, or code is incompatible with the current PHP version | Often /wp-content/plugins/[slug]/ |
| Cannot redeclare function | Two pieces of code define the same function, or the same file is loaded twice | Often two competing plugin/theme paths |
| Uncaught Error: Class not found | Missing dependency/autoloader, incompatible code, or incomplete plugin update | Often /wp-content/plugins/[slug]/ |
| Maximum execution time of X seconds exceeded | Long-running query, import, image operation, or other process exceeded PHP’s execution limit | Varies |
Two more show up constantly and sit outside the table because their causes are behavioral rather than structural.
syntax error, unexpected: a snippet pasted with an unclosed brace or a stray character. This one is a parse failure rather than a runtime failure, which means PHP never even started running the file.
Cannot modify header information, headers already sent: output printed before a redirect or cookie call, usually whitespace after a closing PHP tag.
Digging into any single message: memory exhaustion has its own fix path, undefined function calls point almost always at a PHP version gap, and redeclaration conflicts come down to naming collisions between two extensions.
Two adjacent failures worth recognizing: execution timeouts on slow imports and missing file references that break an include statement.
How to Read a WordPress Fatal Error Message and Find the Log File
A PHP fatal error message contains five parts: the error type, the description, the absolute file path, the line number, and the stack trace. The file path alone identifies the responsible plugin, theme, or core directory in most cases.
Read the path first. /wp-content/plugins/adrotate-pro/adrotate.php tells you more in two seconds than an hour of trial and error.
A real example from the WordPress.org support forums: Fatal error: Uncaught Error: Call to undefined function createfunction() in /wp-content/plugins/adrotate-pro/adrotate.php:59. Plugin named, file named, line named.
Where the debug.log File Lives
Enable logging first. Add three constants to wp-config.php above the “That’s all, stop editing” line:
define('WPDEBUG', true);define('WPDEBUGLOG', true);define('WPDEBUGDISPLAY', false);
Keep WPDEBUGDISPLAY set to false on production. Printing PHP paths to visitors leaks server structure to anyone watching.
The file lands at /wp-content/debug.log, reachable through FTP, SFTP, cPanel File Manager, or a host file browser. Roughly 40% of plugin conflicts get diagnosed just by switching debugging on (MoldStud, 2025).
Detail on surfacing PHP errors safely and reading the raw server log covers the cases where WordPress never boots far enough to write its own file.
Reading a PHP Stack Trace
Read a stack trace from the bottom up.
The bottom frame is where execution started. The top frame is where it died. The interesting line is usually the last one that still sits inside a plugin or theme directory before the trace hands off to WordPress core files.
- Frames labeled
wp-settings.phporwp-load.phpare core doing its job, not the problem - The first non-core path from the top is your suspect
How to Regain Admin Access When a Fatal Error Locks the Site
Four methods restore admin access after a fatal error: the recovery mode email link, renaming the plugins folder over FTP, deactivating plugins directly in the database, and running WP-CLI commands over SSH. Every fix below depends on getting one of these working first.
Downtime is not free. Gartner’s long-cited benchmark puts average IT downtime at $5,600 per minute, and ITIC’s 2024 survey found 90% of mid-size and large enterprises lose more than $300,000 per hour.
Using WordPress Recovery Mode
Recovery mode has shipped in core since WordPress 5.2 and requires no setup (WordPress.org).
Click the secret link in the admin email, log in, and WordPress pauses the failing extension for your session only. Visitors still hit the broken site, but you get a working dashboard.
From there, deactivate the paused plugin or theme, or fix the code if you have the access to do it.
The catch: recovery mode only works when WordPress itself boots far enough to catch the error. Corrupted core files or a fatal error inside wp-config.php produce nothing at all.
Disabling Plugins Without Dashboard Access
| Method | Tool | Action |
|---|---|---|
| File rename | FileZilla, Cyberduck, cPanel File Manager | Rename /wp-content/plugins/ to something like plugins-old |
| Database edit | phpMyAdmin | Clear the active plugin list in the active_plugins row of the WordPress options table |
| Command line | WP-CLI over SSH | Run wp plugin deactivate --all |
Renaming the folder force-deactivates everything at once. WordPress finds no plugin files, logs them as missing, and lets you back in.
For a theme-caused lockout, rename the active theme folder instead. WordPress falls back to a default theme like Twenty Twenty-Five automatically.
WP-CLI is faster if your host offers SSH. wp theme activate twentytwentyfive swaps the theme in one line without touching a single file by hand.
How to Fix Plugin-Caused Fatal Errors
Plugin fatal errors get fixed through isolation, then rollback or removal. Deactivate everything, reactivate in halves, and identify the failing plugin in roughly six rounds rather than forty. Roll back to the last working version before deleting anything.
Plugins carry outsized risk in the WordPress ecosystem. Patchstack attributed 97% of all new security vulnerabilities to plugins rather than core, and 1,250 plugin and theme vulnerabilities were logged in 2025 alone (SQ Magazine).
Isolating the Conflicting Plugin
Binary search beats one-at-a-time reactivation. With 40 plugins installed, halving the active set each round finds the culprit in about 6 rounds instead of 40.
- Deactivate all plugins
- Reactivate the first half, reload the site
- Error returns, the culprit is in that half; error stays away, it is in the other half
- Split the failing half again and repeat
Health Check & Troubleshooting handles this without taking the live site down. Its troubleshooting mode is session-scoped, so only your browser sees plugins disabled while visitors get the normal site.
Rolling Back a Plugin Version
WP Rollback: reverts any WordPress.org plugin to a previous version from the dashboard.
Automatic rollback: core restores the prior version when an update itself fails, though it does nothing for a plugin that was already installed and starts crashing later (Learn WordPress).
Manual replacement: download the older zip from the plugin’s Advanced View tab on WordPress.org and upload it over FTP.
Before reinstalling anything, check the plugin’s readme.txt for its “Requires PHP” and “Tested up to” headers. A plugin last touched in 2019 sitting on PHP 8.2 is a crash waiting for a trigger.
Test on staging first. WP Engine, Kinsta, and SiteGround all include one-click staging, and 70% of developers recommend the practice specifically to avoid this scenario (MoldStud). Related reading covers failures that happen during the update process itself.
How to Fix Theme-Caused Fatal Errors
Theme fatal errors get diagnosed by switching to a default theme, then narrowing to the specific file. Most theme crashes trace back to functions.php: unclosed braces, duplicate function names, or whitespace after a closing PHP tag. WordPress cannot auto-recover from every theme failure.
Rename the active theme folder over FTP if the dashboard is locked. WordPress activates Twenty Twenty-Four or Twenty Twenty-Five on its own and the site comes back.
If a default theme runs clean, the problem sits in your theme’s code. If the error persists, the theme was never the cause.
The functions.php problem accounts for most self-inflicted theme crashes. A tutorial snippet gets pasted in, one brace is missing, and the entire site dies on the next request.
- Unclosed curly braces or parentheses
- Stray characters or blank lines after
?> - A function name that already exists elsewhere
- Copy-paste from a page that converted straight quotes into curly ones
That last one catches people constantly. The code looks correct and PHP refuses it anyway, producing the class of failure that stops parsing before execution begins.
Recovery is simple: restore functions.php from the original theme zip, or delete the last block you added. Guidance on editing that file without breaking the site saves the round trip.
Child themes matter here. Custom code in a child theme survives a parent update. Code edited directly into a parent theme gets wiped on the next release, which produces a second, unrelated failure weeks later.
Page builder themes add a dependency layer. Elementor Hello, Astra, and GeneratePress each declare their own minimum PHP requirement, and Elementor alone runs on 15.1 million sites (SQ Magazine, 2025).
Broader coverage of theme failures across the stack handles the cases where the crash is not in functions.php at all.
How to Fix the Allowed Memory Size Exhausted Error
Memory exhaustion gets fixed by raising the memory limit in wp-config.php, then at the server level if WordPress alone is not enough. WordPress defaults to 40MB on single sites and 64MB on multisite, which no longer covers a modern plugin stack.
That 40MB default has not moved in years. WooCommerce, Elementor, and any bulk import routine blow past it without trying.
Start in wp-config.php. Place both constants above the “That’s all, stop editing” comment:
define('WPMEMORYLIMIT', '256M');define('WPMAXMEMORYLIMIT', '512M');
The second constant governs admin-side tasks like imports and updates. WordPress falls back to 256MB for it when the line is absent (Wpmet).
Confirm the change under Tools > Site Health > Info. The WordPress constants panel shows what actually took effect, not what you typed.
| File | Directive | Scope |
|---|---|---|
wp-config.php | WP_MEMORY_LIMIT | WordPress only |
php.ini | memory_limit = 256M | Server/PHP configuration scope |
.user.ini | memory_limit = 256M | Per-directory, where supported |
.htaccess | php_value memory_limit 256M | Apache with a compatible PHP SAPI |
Which one your host honors varies. Some providers disallow phpvalue entirely, and the directive then throws a server-level failure instead of a memory fix.
SiteGround already ships 256MB by default across its servers and permits up to 512MB on shared plans. Kinsta and WP Engine set their own ceilings that no wp-config edit overrides.
Raising the limit twice in a row is a signal, not a solution. A plugin leaking memory on every page load will eat 512MB the same way it ate 128MB.
Query Monitor identifies the hook or query burning the memory. It adds roughly 10% to PHP memory consumption while active, so uninstall it once the diagnosis is done (Oxygen, 2026).
Deeper coverage of memory exhaustion and its symptoms and locating php.ini across host configurations handles the cases where the wp-config edit does nothing at all.
How to Fix PHP Version Incompatibility Fatal Errors
PHP version fatal errors get fixed by identifying the removed function, updating or replacing the plugin that calls it, and moving to a supported PHP release. Downgrading buys time. It does not solve the problem, and it leaves the site on an unpatched runtime.
Only PHP 8.2, 8.3, 8.4, and 8.5 receive support as of 2026. Everything at 8.1 and below is end of life, with PHP 8.1 having crossed that line on December 31, 2025 (HeroDevs).
PHP 8.2 hits end of life on December 31, 2026, which makes 8.3 the sensible target for most WordPress sites.
| Version | Status | Support ends |
|---|---|---|
| PHP 7.4 | End of life | November 28, 2022 |
| PHP 8.1 | End of life | December 31, 2025 |
| PHP 8.2 | Security support | December 31, 2026 |
| PHP 8.3 | Security support | December 31, 2027 |
Adoption lags badly. 34.2% of WordPress sites were still running PHP 7.4 or older at the end of 2025 (WordPress usage statistics), and among sites already on PHP 8, versions 8.0 and 8.1 account for a combined 26.6% (TuxCare, W3Techs data).
The functions that break things:
createfunction(): deprecated in PHP 7.2, removed in 8.0each(): removed in PHP 8.0- Passing null to non-nullable internal parameters: deprecated in 8.1
- Dynamic properties: deprecated in 8.2, fatal in PHP 9.0
Check your active version under Tools > Site Health > Info > Server before anything else.
Forced host migrations produce most of these crashes. A WooCommerce site audited in 2026 broke during a GoDaddy forced migration from PHP 7.4 to 8.2, with a 2018-vintage shipping plugin as the cause (Ben Ryan). IONOS triggered the same failure pattern on WordPress 6.1 sites when it retired PHP 7.4.
Downgrade only as a holding action. cPanel MultiPHP Manager, Plesk PHP Settings, and most host control panels revert the version in two clicks.
Then scan for the real problem. PHP Compatibility Checker and the PHPCompatibility sniffs for PHPCodeSniffer flag incompatible code before you flip the version back.
Plugin support has improved but is not universal. 89.3% of active plugins support PHP 8.1 and above, while only 67.2% fully support PHP 8.3 (WordPress Plugin Directory statistics, late 2025).
The performance argument is real too. Kinsta’s 2025 benchmarks measured PHP 8.3 at 447 requests per second against PHP 8.1 at 386, a 15.6% gain.
How to Fix Fatal Errors from Core Files and Failed Updates
Core file errors get fixed by replacing wp-admin and wp-includes with clean copies from WordPress.org. Failed updates leave a .maintenance file and sometimes a database lock, both of which need manual removal before the site loads again.
The tell is the file path. An error pointing at /wp-includes/ or /wp-admin/ means no plugin swap or theme change will help.
WP-CLI settles the question in one command: wp core verify-checksums pulls md5 checksums for your version from WordPress.org and flags every file that does not match (WP-CLI documentation).
WP Engine treats any checksum mismatch as a modified core issue and recommends a backup before touching anything.
Replacing Core Files Manually
Download the matching version from the WordPress.org release archive, not the latest one.
- Delete
/wp-admin/and/wp-includes/on the server - Upload the fresh copies of both
- Leave
/wp-content/andwp-config.phpuntouched
File ownership breaks this constantly. A manual FTP upload can land with the wrong owner or mode, so confirming permissions after the transfer saves a second round of debugging.
cPanel’s WordPress integrity tool does the same job through a GUI for anyone avoiding FTP entirely.
Clearing a Stuck Maintenance Mode
The .maintenance file: WordPress writes it at the site root during updates and deletes it when finished. An interrupted update leaves it behind.
The fix: delete the file over FTP, or run wp maintenance-mode deactivate over SSH.
The stubborn case: a lingering update lock stored in the database keeps WordPress convinced an update is running even after the file is gone (WP Fix It).
Full detail on sites that will not exit maintenance mode covers the CDN caching angle, where visitors keep seeing the old response after the fix.
Database corruption sits adjacent to this. Adding define('WPALLOWREPAIR', true); to wp-config.php unlocks the repair tool at /wp-admin/maint/repair.php, which runs without a login. Remove the constant immediately afterward.
A repair that fails usually points at a connection problem rather than a table problem.
Restoring from backup is the last option. UpdraftPlus runs on over 3 million sites with a 4.8 star rating, and BlogVault plus host-level snapshots cover the same ground. Every restore comes with a data loss window between the last backup and the crash.
When core replacement, repair, and restore all fail, a clean reinstall over the existing database is the remaining path.
Which Tools Diagnose WordPress Fatal Errors
Six tools cover WordPress fatal error diagnosis: Query Monitor, Health Check & Troubleshooting, WP Debugging, WP-CLI, LocalWP, and New Relic. Each one resolves a different error class, and picking the wrong one wastes an afternoon.
| Tool | Best for | Access needed |
|---|---|---|
| Query Monitor | Hooks, database queries, memory usage, PHP errors | WordPress dashboard |
| Health Check & Troubleshooting | Isolating plugin/theme conflicts without affecting visitors | WordPress dashboard |
| WP-CLI | Diagnosing and managing a site when the browser or admin area is inaccessible | SSH / command line |
| LocalWP | Reproducing and debugging crashes in an isolated local environment | Local machine |
Query Monitor runs on 200,000+ sites and attributes every query, hook, and HTTP API call to the plugin or theme responsible (WordPress.org, September 2025). Component attribution is the feature that matters when a query failure is what actually triggered the crash.
One developer traced a post-launch slowdown to a third-party plugin firing 47 duplicate queries per page load, found purely through the Queries panel (DEV Community, 2026).
Health Check & Troubleshooting disables plugins for your browser session only. Visitors keep seeing the normal site while you work, which makes it safe on production in a way that WPDEBUG with display enabled never is.
WP Debugging toggles the debug constants from the dashboard instead of forcing an FTP round trip into wp-config.php.
For heavier sites, New Relic and equivalent host APM tools profile memory and execution time at the transaction level. Overkill for a five-plugin blog. Necessary for a WooCommerce store with 40,000 products.
LocalWP earns its place by removing the risk entirely. Pull the site down, break it locally, and the live version never notices.
How to Prevent WordPress Fatal Errors
Fatal error prevention comes down to five habits: staging before every update, tested backups, update discipline, removing unused extensions, and monitoring that catches the crash before a customer does. None of them are technical. All of them get skipped.
Staging is the single highest-return habit. A survey of WordPress users found 38% suffered significant data loss from conflicts they hit without a staging area (MoldStud, 2025).
WP Engine, Kinsta, and SiteGround all include one-click staging on standard plans, so cost is rarely the real reason it gets skipped.
Backups that were never restored are not backups. Run a restore into staging once a quarter and find out whether the zip actually works before the day you need it.
Update discipline in practice:
- Read the changelog on major version jumps
- Leave auto-updates on for security releases, off for feature releases
- Never run a core update and five plugin updates in the same session
- Update during low-traffic hours
Automatic plugin updates are already enabled by default on 71% of sites (SQ Magazine, 2025), which cuts both ways. Security patches land fast, and so does the breaking change nobody tested.
Outdated components account for roughly 42% of vulnerabilities in third-party extensions (MoldStud), so switching auto-updates off entirely trades one risk for a worse one.
Delete what you are not using. A deactivated plugin still sits in /wp-content/plugins/ and still carries its vulnerabilities, and the same logic applies to themes left sitting in the directory after a redesign.
Custom code belongs in a child theme or a code snippets plugin. Direct edits to a parent theme’s functions.php get erased on the next update, which produces a fresh crash weeks after you have forgotten the original change.
Monitoring closes the loop. UptimeRobot, Better Uptime, and host-level alerts catch the failure in minutes rather than whenever a customer emails, and 44% of companies now target 99.999% availability, the equivalent of 5.26 minutes of unplanned downtime per year (ITIC, 2024).
Agencies running dozens of installs need the same discipline at scale, which is where centralized management across sites stops being a convenience and starts being the only workable approach.
FAQ on How To Solve WordPress Fatal Errors
What causes a WordPress fatal error?
Six causes dominate: plugin conflicts, theme code, memory exhaustion, PHP version mismatches, corrupted core files, and interrupted updates. Plugin conflicts accounted for 65% of WordPress technical malfunctions in 2025 (Digidop), so rule those out first.
How do I fix a fatal error without dashboard access?
Rename /wp-content/plugins/ over FTP to force-deactivate everything at once. Or empty the activeplugins row in wpoptions through phpMyAdmin. WP-CLI handles it with wp plugin deactivate --all when your host offers SSH.
Where is the WordPress debug log located?
The file sits at /wp-content/debug.log once WPDEBUG and WPDEBUGLOG are set to true in wp-config.php. Reach it through FTP, SFTP, or cPanel File Manager. Keep WPDEBUGDISPLAY set to false on production.
Does recovery mode work for every fatal error?
No. Recovery mode needs WordPress to boot far enough to catch the failure and send the email. A corrupted core file, a broken wp-config.php, or a database connection failure produces nothing at all.
Can a fatal error damage my database?
Rarely. PHP halts execution before most writes complete, which leaves content intact. Interrupted updates are the exception, since they can leave a lingering update lock or half-written option rows behind in wpoptions.
How do I know whether a plugin or theme caused it?
Read the file path in the error message. /wp-content/plugins/[slug]/ names the plugin. /wp-content/themes/[slug]/ names the theme. A path inside /wp-includes/ means neither one is responsible.
What does allowed memory size exhausted actually mean?
PHP hit its memory ceiling mid-request and stopped. WordPress defaults to 40MB on single sites, which page builders and imports pass easily. Raise WPMEMORYLIMIT to 256M, then check for a leak.
Will downgrading PHP fix the error permanently?
No. Downgrading is a holding action that puts the site back on an unsupported runtime. PHP 8.1 reached end of life on December 31, 2025, so updating the plugin calling the removed function is the real fix.
Why does my site still show maintenance mode after the fix?
The failed update left a .maintenance file at the site root. Delete it over FTP or run wp maintenance-mode deactivate. Detail on clearing that state properly covers the CDN caching case.
Can fatal errors be prevented entirely?
Not entirely. Staging, tested backups, and child themes cut the frequency sharply. 38% of users reported significant data loss from conflicts they hit without a staging area (MoldStud, 2025).
Conclusion
Solving WordPress fatal errors is a process of elimination, not guesswork. Read the file path, isolate the extension, verify the core files against checksums.
Recovery mode and Health Check & Troubleshooting cover most emergencies without touching FTP. WP-CLI takes over when the browser returns nothing at all.
The habit separating a 10 minute fix from a lost weekend is preparation. A staging environment, a restore you have actually tested, and custom code kept in a child theme.
None of that helps during the crash. All of it decides how bad the crash gets.
Set up uptime monitoring before you need it. The next time PHP halts execution, you hear it from an alert instead of a customer.


