WordPress Errors

Reference articles for WordPress error messages I see most often: 5xx server errors (500 through 504), the white screen of death, the critical error notice, database connection failures, PHP resource limits, and the messages that appear after a failed update.

Each article explains what the error actually means at a technical level, the causes that produce it most often, and which checks you can run safely before changing anything in production.

Scroll

Articles

  1. 500 Internal Server Error in WordPress

    A 500 Internal Server Error means the WordPress application errored before it could produce a valid response. This article explains the exact mechanism, the five real causes, how to tell them apart in the logs, and how to fix each one.

    2603 words
  2. Error establishing a database connection in WordPress: causes and fixes

    This error means WordPress can't connect to your database, which takes your entire site offline.

    1887 words
  3. There has been a critical error on this website: how to fix the WordPress fatal error screen

    WordPress shows this screen when a PHP fatal error stopped the request. The recovery email is the fastest way back in, and the debug log tells you which plugin or theme to remove.

    2074 words
  4. White Screen of Death in WordPress: diagnosing a blank page when the critical error screen never loads

    A completely blank WordPress page in 2026 almost always means a PHP fatal fired before WordPress could render the critical error screen. Here is how to turn that blank page into a readable error and fix the cause.

    1675 words
  5. Too Many Redirects in WordPress: fix the ERR_TOO_MANY_REDIRECTS loop

    A redirect loop makes your WordPress site unreachable. This guide names the five real causes in order of likelihood and fixes each one with a verification you can check in the browser.

    2678 words
  6. Allowed memory size exhausted in WordPress

    PHP killed the request because it tried to allocate more memory than your server allowed. Fix it by raising WP_MEMORY_LIMIT or the underlying PHP memory_limit, and track down the plugin, upload, or admin task that is asking for too much.

    2549 words
  7. Briefly unavailable for scheduled maintenance: how to fix a stuck WordPress update

    WordPress shows this message when an update is running. If it stays visible, a file called .maintenance was left behind. Here is how to remove it safely.

    1942 words
  8. Maximum execution time exceeded in WordPress

    A PHP script ran longer than the server allowed. Fix it by raising max_execution_time, calling set_time_limit(), or breaking the task into smaller batches.

    1894 words
  9. 403 Forbidden in WordPress

    A 403 Forbidden on a WordPress site means the server understood the request and refused it on purpose. This article explains the five real causes, how to tell which is yours, and how to fix each one.

    2973 words
  10. syntax error, unexpected: how to fix a PHP parse error in WordPress

    A single missing bracket or semicolon in a PHP file can take your entire WordPress site down. The error message tells you exactly where it is, and the fix is usually two edits away.

    2224 words
  11. Fix the WordPress login redirect loop

    A WordPress login redirect loop throws you back to wp-login.php after you submit valid credentials. This article walks through the real causes in order of likelihood, shows you how to verify each one, and gives you a targeted fix per case.

    2623 words
  12. Sorry, you are not allowed to access this page in WordPress

    WordPress shows this message when a capability check has rejected your request after you logged in. The fix is almost never the login form: it is your stored role, a plugin that rewrote your capabilities, or a database mismatch that broke the lookup.

    2784 words
  13. 502 Bad Gateway in WordPress

    A 502 Bad Gateway means the proxy in front of your WordPress site got an invalid response (or no response at all) from the application server, usually because a PHP-FPM worker crashed mid-request. This article explains the exact mechanism, the five real causes, how to tell them apart in the logs, and how to fix each one.

    2566 words
  14. 503 Service Unavailable in WordPress

    A 503 Service Unavailable means the server in front of your WordPress site is currently unable to handle the request, almost always because something is overloaded, rate-limited, or in maintenance. This article explains the exact mechanism, the five real causes, how to tell them apart, and how to fix each one.

    3138 words
  15. 504 Gateway Timeout in WordPress

    A 504 Gateway Timeout means the proxy in front of your WordPress site waited too long for the application server to answer and gave up. This article explains the exact mechanism, the four real causes, how to tell them apart, and how to fix each one.

    2180 words
  16. HTTP error when uploading media in WordPress

    WordPress shows a bare "HTTP error" in the media library when the server rejects an upload mid-request. The cause is almost always a size limit, an Imagick memory spike, a request timeout, or a WAF rule. Diagnose with the server error log and fix the right limit.

    2666 words
  17. 404 Not Found on a WordPress page that should exist

    A WordPress page returns 404 even though it exists in the admin. This article explains why that happens, how to tell which of the five causes is yours, and how to fix each one.

    2523 words
  18. Mixed content warnings in WordPress: what they mean and how to fix them

    You enabled SSL and now your WordPress site shows a broken padlock or 'Not Secure' warning. That is mixed content, not a broken certificate. This article explains the difference, how to find the offending resources, and the four real fixes in order of thoroughness.

    2916 words
  19. How to force WordPress to HTTPS (without the redirect loop)

    Your SSL certificate is active (for the primer on certificate types, see [SSL certificates in WordPress]({{ '/en/knowledge-base/wordpress/security/ssl-certificate-in-wordpress/' | locale_url }})) but WordPress still loads over HTTP, or you enabled a redirect and now see ERR_TOO_MANY_REDIRECTS. This guide covers the four methods that actually work, in order of safety, and the two configurations (Cloudflare Flexible and untrusted reverse proxies) that will burn you if you skip them.

    4131 words
  20. Missed schedule: fix WordPress scheduled posts that did not publish

    WordPress shows 'Missed schedule' when the publish time passed but the cron runner never fired. The post is not lost. This article gets the stuck post live in the next minute and fixes the underlying cause so the next one publishes on time.

    2860 words
  21. 429 Too Many Requests in WordPress

    A 429 Too Many Requests in WordPress almost never means your site is under attack. In most cases the site is rate-limiting itself, usually because WP-Cron or a runaway Action Scheduler job is hammering an external API. This article explains which layer is actually saying 'slow down', how to tell them apart from the logs, and how to fix each root cause without breaking anything else.

    4211 words
  22. How to increase the maximum file upload size in WordPress

    WordPress refuses an upload with "exceeds the upload_max_filesize directive" because the limit comes from PHP, not WordPress. Raise upload_max_filesize and post_max_size together in the right place for your stack, then verify in Site Health.

    3006 words
  23. How to enable and read the WordPress debug log

    Another KB article told you to turn on WP_DEBUG and read debug.log. Here is exactly how to do it safely, where the file lives, what each constant really does, and how to keep the log private so visitors never see your errors.

    2867 words
  24. A plugin update broke my WordPress site: how to diagnose and roll back safely

    You clicked update, the page reloaded, and now your site is down. This article walks the safe recovery path: get back into wp-admin, identify the culprit, roll back the right way, and avoid the database migration trap that breaks naive rollbacks.

    3377 words
  25. WordPress asking for FTP credentials on plugin install: how to fix it

    You click Install Plugin, and instead of installing, WordPress shows a Connection Information form asking for an FTP host, username, and password. This article explains the file ownership check that triggers it, walks through the correct fix (chown to the PHP user), shows the wp-config.php shortcuts and when each one is safe, and lists the common Nginx and Docker scenarios where it shows up.

    3072 words
  26. WordPress media library not showing images

    When the WordPress media library shows blank tiles, broken-image icons, or generic placeholders instead of thumbnails, the cause is usually one of seven things: file permissions, a missing image library, stale post meta after a migration, an SSL switch that left HTTP URLs behind, the WP 5.3 -scaled trap, or a format the server cannot decode. Diagnose with Site Health and the browser network tab before regenerating anything.

    3316 words
  27. An automated WordPress update has failed to complete: how to safely recover

    WordPress emailed you to say the automatic update did not finish. The site might be fine, the site might be locked in maintenance mode, or the site might be running the new version with cached old code. This article walks the safe recovery path: verify the site state, clear the .maintenance file, work through the five real causes, and confirm the update actually completed.

    3229 words
  28. "Sorry, you are not allowed to upload this file type" in WordPress

    WordPress refuses an upload with "Sorry, you are not allowed to upload this file type" because the file's MIME type is not in the default allow-list. The fix depends on the format. SVG needs Safe SVG (sanitisation is mandatory). WebP needs WordPress 5.8+ and a server with WebP support. HEIC needs WordPress 6.7+ with Imagick. ALLOW_UNFILTERED_UPLOADS is an emergency escape hatch, not a permanent fix.

    3169 words
  29. WordPress stuck on Database Update Required: how to break the loop

    After a WordPress update, every visit to wp-admin sends you to the Database Update Required screen. You click the button, it says it succeeded, and the next page load shows the same screen again. Here is why the loop happens and how to break it without touching the schema by hand.

    2094 words
  30. WooCommerce cart not working: diagnosing a broken add-to-cart or checkout

    Your WooCommerce add-to-cart button does nothing, the cart empties itself between pages, or the checkout page spins without completing the order. The cause is almost never 'a plugin conflict' in the way most forums suggest. In the majority of cases it is a caching configuration that serves a stale page where it should serve a dynamic one. This article walks through every common cause in order of likelihood, with a browser-side diagnostic for each.

    2520 words
  31. "The link you followed has expired" in WordPress

    WordPress shows "The link you followed has expired. Please try again." with a blank white page and a 403 status code. The message sounds like a session timeout, but the most common cause is a file upload that exceeded PHP's post_max_size, which silently empties the form data and makes WordPress think the security nonce was never sent.

    1780 words
  32. WooCommerce checkout not working: a systematic troubleshooting guide

    Your WooCommerce checkout is broken and you need to know whether the cause is caching, a JavaScript conflict, a payment gateway, a Web Application Firewall, or something else entirely. The hardest part is not the fix. It is figuring out which of seven possible failure modes you are actually looking at. This article disambiguates the symptom first, then routes you to the right diagnostic and the right sibling article when one exists.

    3559 words
  33. "MySQL server has gone away" in WordPress

    This error means WordPress had a working database connection, but MySQL or MariaDB closed it before the current query could finish. The most common triggers are an idle connection that exceeded wait_timeout, or a query packet larger than max_allowed_packet.

    1716 words
  34. WooCommerce payment gateway not showing at checkout

    You enabled a payment gateway in WooCommerce settings but it does not appear on the checkout page. The cause is usually one of five things: the gateway does not support the Checkout Block, the site lacks a valid SSL certificate, the gateway is in test mode with live credentials (or vice versa), a plugin conflict prevents the gateway JavaScript from loading, or geographic restrictions silently exclude the customer's country. This article walks through each cause with a diagnostic for every step.

    1376 words
  35. WooCommerce shipping zones and rates: fixing "no shipping options were found"

    Your WooCommerce checkout shows "No shipping options were found for your location" or displays the wrong shipping rate. The cause is usually zone ordering (WooCommerce matches the first zone in the list, not the most specific), a free shipping method whose conditions are not all met, or cached shipping rates that persist after a settings change. This article walks through the zone priority model, the most common misconfigurations, and the debug tools WooCommerce provides.

    1188 words
  36. WordPress plugin conflict: how to find which plugin broke your site

    Your site is broken, you suspect a plugin, and you do not know which one. This article walks the structured diagnosis: safe-mode for one user, folder-rename bisection when wp-admin is gone, and the debug log read that names the offender.

    3593 words

5xx server errors: what the codes actually mean

All 5xx codes mean the server side could not complete the request. The differences sit in which layer failed and which part of the stack you should look at first.

  • 500 Internal Server Error. A generic failure inside the application. For WordPress this usually points at a fatal PHP error, an exhausted memory limit, or a broken plugin. The web server caught the failure and surfaced 500 because it has nothing more specific to report.
  • 502 Bad Gateway. The web server in front (nginx, a reverse proxy, a load balancer) reached PHP-FPM or another upstream and got back an invalid or empty response. The application crashed, the worker died, or the upstream connection broke mid-request.
  • 503 Service Unavailable. The server is up but actively refusing the request. For WordPress, two very different cases produce 503: real overload (no PHP workers free) and the maintenance flag set by a stuck or interrupted update. The fix is completely different in each case.
  • 504 Gateway Timeout. The web server reached PHP-FPM but waited longer than the timeout for a response. The upstream is alive but not finishing the request in time, often because of a slow query, a stuck cron job, or an outbound API call that never returns.

The dedicated articles above for 500, 502, 503, and 504 explain how to tell these apart, which logs surface the right detail, and which checks you can run safely before touching anything in production.

503 errors vs the maintenance message

A real 503 and the "Briefly unavailable for scheduled maintenance" message look similar from the visitor side but they have nothing in common technically. A real 503 comes from the server because there are no PHP workers available, or because a process has been told to refuse work. The maintenance message comes from WordPress itself: WordPress drops a .maintenance file in the document root during updates and serves a static notice while it runs. If the update crashes, the file stays behind and the notice never goes away.

The two articles for these symptoms cover the diagnosis and the safe recovery path for each case so you do not delete the wrong file or restart the wrong service.

Trouble with speed or stability?

Start with performance topics: slow wp-admin, high TTFB, CPU spikes, and intermittent slowness.

Browse performance topics

Search this site

Start typing to search, or browse the knowledge base and blog.