A 500 Internal Server Error is the most generic failure a server can return. It means: "I tried to handle your request, something went wrong, and I can't tell you what." It's a 5xx code — a server problem — and the useful information is never on the page. It's in the logs.

What 500 actually means

500 is the catch-all the server falls back to when it hits an error it didn't anticipate and doesn't have a more specific code for. Unlike a 404 (not found) or 403 (forbidden), it tells you almost nothing on purpose — exposing the real error to visitors would be a security risk. So the page is vague, but the cause is concrete and waiting in your logs.

Common causes

CauseWhat's happening
Unhandled exceptionApp code threw an error nobody caught
Bad deployA recent release introduced a runtime bug
Config / .htaccessA malformed server or rewrite rule
PermissionsWrong file/folder ownership or mode
Database failureThe app can't connect to or query the DB
Out of memoryThe process was killed mid-request

How to fix it — as a developer

  1. Read the server logs. This is the whole game — the stack trace names the file and line.
  2. Check your last deploy. If it started after a release, you have your suspect; roll back to confirm.
  3. Verify config & permissions. A broken .htaccess or wrong file mode (755/644) is a classic cause on Apache/PHP.
  4. Test the database connection. Wrong credentials or a maxed-out connection pool surface as 500s.
  5. Check memory. OOM kills produce intermittent 500s under load.

How to fix it — as a visitor

  • Reload the page and try again in a few minutes.
  • Clear your cache or try a private window.
  • It's the site's problem — if it persists, the operators need to fix it.

Catch 500s the moment they start

A single 500 is noise; a sudden spike of them is an incident. The difference between a 10-minute and a 3-hour outage is how fast you find out. Nurbak Watch tracks the error rate of every endpoint and alerts you the instant 500s climb — with the route and timing you need to start debugging.

Related HTTP status codes