You clicked "Update" on a plugin or WordPress core, and now every page on the site just shows: "Briefly unavailable for scheduled maintenance. Check back in a minute." Except a minute has turned into twenty, and it's still there. This is one of the most common panic-inducing WordPress errors, and it's also one of the easiest to fix once you know where WordPress hides the lock file causing it.
Symptom: the maintenance screen won't go away
Every front-end and back-end request — including /wp-admin/ — returns the same plain white page with that maintenance message and an HTTP 503 status. It usually shows up right after:
- Updating a plugin or theme from the wp-admin dashboard
- Running a WordPress core update
- Running
wp core updateorwp plugin update --allover SSH/WP-CLI - An auto-update that ran overnight and never finished
Normally this screen appears for a second or two while WordPress swaps files, then disappears on its own. When it sticks around, something interrupted the update mid-way and left evidence behind.
Cause: WordPress didn't delete its own lock file
Whenever WordPress starts an update, it drops a file called .maintenance in your site's root directory (the same folder as wp-config.php). That file is the entire mechanism behind the message — WordPress checks for it on every request and, if it exists, shows the maintenance screen instead of loading your site. Once the update finishes successfully, WordPress deletes the file itself.
The problem is that step two doesn't always happen. Common triggers:
| Trigger | Why it leaves the file behind |
|---|---|
Request timeout / low PHP max_execution_time | The update process gets killed by the server before cleanup runs |
| Closing the browser tab during an update | WordPress never gets the follow-up request that triggers cleanup |
| Server resource limits (low RAM on a shared plan) | PHP process is OOM-killed mid-update |
| File permission issues | WordPress can create the lock file but can't remove it |
| A plugin conflict during the update hook | PHP fatal error stops execution before the cleanup step |
None of this touches your database, your theme, or your content — it's purely a leftover flag file. That's good news: the fix is safe and takes under a minute.
Fix: delete the .maintenance file
You have three ways in, depending on what access you have.
Option 1: cPanel File Manager
- Log in to cPanel and open File Manager
- Navigate to
public_html(or the subfolder your WordPress install lives in) - Make sure Show Hidden Files (dotfiles) is enabled under Settings —
.maintenancestarts with a dot, so it's hidden by default - Find
.maintenance, right-click it, and delete it - Reload your site — it should load normally right away
Option 2: FTP / SFTP
Connect with FileZilla or any SFTP client, enable “show hidden files” in the client settings, browse to your WordPress root, and delete .maintenance the same way.
Option 3: SSH (fastest if you have terminal access)
cd /home/yourcpanelusername/public_html
ls -la | grep maintenance
rm .maintenanceIf you manage WordPress with WP-CLI, there's also a dedicated command that does the same thing safely:
wp maintenance-mode deactivate --path=/home/yourcpanelusername/public_htmlRefresh the site. If it loads immediately, that confirms the lock file was the only issue — no further action needed.
If deleting the file doesn't fix it
Occasionally the underlying update genuinely failed partway through, not just the cleanup step. After removing .maintenance:
- Check Plugins → Installed Plugins for anything showing as inactive or a version mismatch, and update it manually
- Compare your WordPress version under Dashboard → Updates against the latest release — if core update was interrupted, re-run it
- Look at
wp-content/debug.log(or your PHP error log in cPanel's Errors tool) for a fatal error timestamp matching when the maintenance screen appeared - If a specific plugin's files look incomplete, reinstall it fresh from the WordPress repo or your license source rather than trying to patch it
Prevention: stop this from happening again
A few habits make this a non-issue going forward:
- Update plugins and core one at a time, not in a giant batch — it's easier to spot which one caused a problem, and each update finishes faster
- Raise PHP's execution time and memory limit if your plan runs on tight defaults. In cPanel, use MultiPHP INI Editor and bump
max_execution_timeto at least 120 andmemory_limitto 256M - Take a backup before major updates — cPanel's backup tool or a plugin like UpdraftPlus, so a bad update is a five-minute rollback instead of a fire drill
- Avoid updating over an unstable connection — if the browser tab that started the update loses its request mid-flight, WordPress never gets to run cleanup
- Use WP-CLI for bulk updates on a VPS — it runs server-side and isn't tied to a browser tab staying open
If this keeps happening on the same site every time you update, it's usually a sign the hosting plan is underpowered for the update process (low memory or CPU throttling) rather than a WordPress bug — worth a quick resource check with your host.