At One Place

HTTP 500 — Internal Server Error

HTTP 500
Internal Server Error
Something went wrong on the server and it has no more specific code to describe it.

What 500 actually means

The catch-all server failure. The request reached the application, the application threw an exception or hit a condition it could not handle, and there was no better answer to give. It is deliberately vague to the outside world — a detailed error message would help attackers as much as users — which means the real explanation only exists in the server logs. Nothing you do as a visitor caused it and nothing you do as a visitor will fix it.

Common causes

  • An unhandled exception in application code
  • A database connection failure or a query that errored
  • A syntax or fatal error introduced by a recent deploy or plugin update
  • Wrong file permissions or ownership on application files
  • A broken `.htaccess` rule on Apache
  • The process running out of memory, or hitting a PHP memory limit
  • A missing environment variable or configuration file after a deployment

If you're just trying to view the page

  1. Reload after a minute — many 500s are transient and clear on their own
  2. Try a hard refresh (Ctrl+F5 on Windows, ⌘ + Shift + R on Mac) to rule out a cached broken response
  3. Check a status page or Downdetector to see whether the whole site is affected
  4. Try another browser or device only to confirm it is the site; the fix is not on your end
  5. Report it to the site owner with the URL and the time — that is genuinely useful to them

If it's your site

  1. Read the actual error in the logs — the browser-facing 500 carries none of it. Look in the application log first, then the web server error log
  2. For PHP, check `error_log` and temporarily enable `display_errors` in a non-production environment
  3. Check whether the last deploy, plugin update or dependency bump correlates with the start of the errors, and roll back to confirm
  4. Verify database connectivity, credentials and connection pool limits
  5. Check disk space and memory; a full disk causes 500s that look like application bugs
  6. Confirm file permissions and ownership are correct for the user the web server runs as
  7. Add error tracking so 500s come with stack traces rather than being reconstructed after the fact

Reference

Status code
500
Reason phrase
Internal Server Error
Category
5xx — Server Error
Cacheable by default
No
Defined in
RFC 9110 §15.6.1

Common questions

What does HTTP 500 mean?
Something went wrong on the server and it has no more specific code to describe it. The catch-all server failure. The request reached the application, the application threw an exception or hit a condition it could not handle, and there was no better answer to give.
How do I fix a 500 error?
Reload after a minute — many 500s are transient and clear on their own
Is 500 a client error or a server error?
500 is in the 5xx range, which means server error. The request was acceptable but the server could not fulfil it, so retrying later can succeed.

Related pages

Sources

  1. Hypertext Transfer Protocol (HTTP) Status Code Registry — IANA
  2. RFC 9110: HTTP Semantics — IETF

How these figures are compiled and checked