Fix common WordPress errors.
One page per error, written for somebody whose site is down right now. Each starts with the message as WordPress writes it, then the causes in the order worth checking them.
Find the message you are seeing.
Match the wording rather than the symptom - a blank page and a 500 look identical in a browser and are different problems underneath.
Error establishing a database connection
WordPress loaded, read wp-config.php, and could not get an answer from MySQL. Every page on the site is blank until it can.
The WordPress white screen of death
A completely blank page with no error and no HTML. PHP stopped mid-request and the message went to a log you have not read yet.
500 Internal Server Error
The web server tried to produce the page, something went wrong inside, and it returned a status code instead of a reason.
502 Bad Gateway
The web server reached PHP and PHP did not answer. Nginx or Apache is reporting a conversation that ended before it started.
504 Gateway Timeout
PHP was still working when the web server gave up waiting. Nothing crashed - it simply took longer than the timeout allows.
Allowed memory size exhausted
PHP reached the ceiling it was given and stopped. The number in the message is the limit, not the amount your site needs.
Maximum execution time exceeded
PHP stopped a script that had been running longer than it is allowed to. The limit did its job; the question is whether the job belonged in a web request.
ERR_TOO_MANY_REDIRECTS
The browser followed redirect after redirect and stopped. Two things disagree about where this URL should live, and each is confident.
There has been a critical error on this website
WordPress's own fatal error handler. It caught a crash, replaced the page with this sentence, and told nobody except the admin email.
Briefly unavailable for scheduled maintenance
WordPress writes a .maintenance file before an update and removes it after. The update did not finish, so the file is still there.
The uploaded file exceeds the upload_max_filesize directive
PHP refused the file before WordPress saw a byte of it. The number in the message is PHP's ceiling, not WordPress's.
HTTP error when uploading images
The file transferred, then something failed while WordPress was generating the thumbnails. The message is the same whatever that something was.
Mixed content warnings on an HTTPS site
The page arrived over HTTPS and then asked for something over HTTP. Browsers block the active parts and drop the padlock for the rest.
Scheduled posts show “Missed schedule”
The publish time passed and nothing happened. WP-Cron is not a clock — it runs when a request arrives, and no request arrived.
MySQL server has gone away
WordPress had a working database connection and lost it mid-request. The query is rarely at fault; the connection is.
Your site could not complete a loopback request
WordPress made an HTTP request to its own address and did not get an answer. Several features depend on that working.
The REST API encountered an error
Something answered the request that was not WordPress, or answered it with HTML. The editor stops working first, because it depends on the API for everything.
Sorry, this file type is not permitted for security reasons
The upload was rejected before anything was written. Either the extension is not on the allowed list, or the file's contents do not match the extension.
403 Forbidden on a WordPress site
The request was understood and refused. The refusal came from the web server, a firewall or a permissions rule — WordPress is rarely involved.
404 on every page except the home page
A very specific pattern with a very short list of causes. Your posts still exist; the router in front of them is not routing.
Or stop debugging your host.
Most of these are configuration rather than WordPress. Managed hosting with daily backups, one-click staging and per-site limits takes the common causes off the list.