How to Fix a Full Disk or “Inode Quota Exceeded” on a WordPress Site
Uploads fail, updates say “Could not create directory”, the database refuses writes or mail bounces. Find what is eating disk space or inodes and clear it safely.
A critical error, a white screen, a database error or a login loop.
Do this first
Diagnose it
WordPress errors read alike but point to very different problems. Match the exact text first.
| Message | What it means |
|---|---|
There has been a critical error on this website. | A PHP fatal error, caught by the WordPress error handler (since version 5.2). The real error is in the log. |
| A blank white page | A fatal error with error display off, often memory exhaustion or a crash before the handler loads. |
Error establishing a database connection | WordPress cannot log in to MySQL or MariaDB. |
Briefly unavailable for scheduled maintenance. Check back in a minute. | An interrupted update left a .maintenance file in the site root. |
Allowed memory size of 268435456 bytes exhausted | PHP hit its memory limit (268435456 bytes is 256 MB). |
Maximum execution time of 30 seconds exceeded | A request ran longer than PHP allows. |
Sorry, you are not allowed to access this page. after a migration | The user roles no longer match the database table prefix. |
Updating failed. The response is not a valid JSON response. | The block editor cannot reach the REST API. |
The link you followed has expired. on upload | The file is larger than upload_max_filesize or post_max_size. |
Another update is currently in progress. | A stale update lock is still in the database. |
| Login page reloads with no error | A login loop: cookie, URL or HTTPS mismatch. |
These checks run in an SSH terminal, inside the site’s folder (the one that contains wp-config.php). Your hosting panel shows the SSH login details.
1. Find out whether WordPress itself loads.
wp core version
wp core version --skip-plugins --skip-themes
--skip-plugins and --skip-themes load WordPress without any plugin or theme code. If the first command prints the same fatal error and the second prints a version number, a plugin or the theme is the cause, not core.
2. See what changed most recently.
ls -lt wp-content/plugins wp-content/themes | head -n 15
-lt sorts by last modified time, newest first. The folder at the top whose date matches when the error started is your first suspect.
3. Check the memory limit WordPress actually gets.
wp eval 'echo ini_get("memory_limit"), " / ", WP_MEMORY_LIMIT, "\n";'
The first number is the PHP limit set by the server, the second is the limit WordPress asks for. WordPress cannot go above the server value. If the error says memory exhausted and these show 128M or less, memory is a real candidate.
4. Test the REST API, for the JSON error.
curl -s -o /dev/null -w '%{http_code}\n' https://example.com/wp-json/
Run this one on your own computer, replacing example.com with your domain. Good: 200. A 403 means a security plugin or firewall blocks it; a 404 means the rewrite rules are broken (resave Settings, Permalinks).
5. Check the database.
wp db check
Good: every table reports OK. A table marked as crashed explains database errors on some pages but not others.
wp-content/plugins/PLUGIN_NAME/ or wp-content/themes/THEME_NAME/, and the time matches an update. Fix: disable that plugin or roll it back to the previous version, then report it to the developer.Call to undefined function create_function() or each(), both removed in PHP 8.0, with no update on your side. Fix: update or replace the old code. Switch PHP back only as a short stopgap, because older versions stop getting security fixes.Allowed memory size ... exhausted. The file named is where memory ran out, not always what used it. Fix: set define( 'WP_MEMORY_LIMIT', '256M' ); in wp-config.php. If it still runs out at 512 MB, find the leak instead of raising the limit again.PHP Parse error: syntax error, unexpected with a file and line number, often functions.php or a snippets plugin. Fix: undo the edit over SFTP. Editing in the dashboard gives you no way back if it breaks.Another update is currently in progress. Fix: delete .maintenance from the site root; clear the lock with wp option delete core_updater.lock; reinstall the half-updated plugin.wp-login.php. Fix: make the WordPress Address and Site Address match the real URL exactly, check any COOKIE_DOMAIN line in wp-config.php, and exclude wp-login.php from caching.PREFIX_user_roles and the user meta keys PREFIX_capabilities must use the same prefix as $table_prefix in wp-config.php.Could not create directory. Fix: ask your host to set ownership to the site’s user. Avoid setting folders to 777.wp core verify-checksums passes, core is fine.Did this fix it?
Still stuck? Start again from what you can see in the Emergency Room.
The full fix
Uploads fail, updates say “Could not create directory”, the database refuses writes or mail bounces. Find what is eating disk space or inodes and clear it safely.
Scheduled posts show “Missed schedule” and backups or emails never run. Find out why WP-Cron is not firing, replace it with a real system cron and clear stuck events.
Site Health flags a failed loopback request or a REST API error. Learn what the test does, test it from the server with curl, and fix DNS, firewall, auth and plugin causes.
WordPress says “The link you followed has expired” when you upload a theme, save a setting or submit a form. Find which nonce failed and why, then fix it.
Media uploads fail with an HTTP error, an image processing error or a file type refusal. Read the log, then fix memory, Imagick, file types or folder permissions.
You got an alert that a plugin you run is vulnerable. Read the advisory, decide how urgent it is, patch or replace the plugin, and check whether you were already exploited.
You click Save Menu and the last items vanish or never stick. Find out whether PHP is cutting off the form, a script is failing, or the save is timing out, and fix it.
You edited a template, a header or theme.json and nothing changed. Learn how block themes layer database overrides over theme files, and how to see which one wins.
A theme update wiped your edits, or activating a child theme caused a fatal error or missing styles. Recover the lost code, then build the child theme properly.
Elementor stuck on its loading screen, or showing “The preview could not be loaded” or “Server Error”? Read the error, use Safe Mode and Elementor’s own tools to fix it.
Divi Builder timing out, failing to load or showing a blank screen? Use the Support Center, Safe Mode, static CSS tools and the right PHP limits to find and fix the cause.
Breakdance builder blank, styles not updating, or a template ignored? Use the Tools tab, WP-CLI, template priority and directory checks to find the cause safely.
Search the field manual
Or jump straight to a symptom
Press / to search from any page, Esc to close