500 critical
500 Internal Server Error
A 500 is the server’s way of saying "something broke on my end." Generic by design — here’s how to find the real cause.
What you see
HTTP 500 — Internal Server Error The server encountered an unexpected condition that prevented it from fulfilling the request.
What’s actually happening
The page won’t load at all, and the error is deliberately vague to avoid leaking details to attackers. The real cause is in the server logs, not on the screen. A site-wide 500 is an emergency — the whole site is down.
Common causes
- A PHP fatal error or unhandled exception in the application or a plugin/theme
- A corrupted or misconfigured .htaccess file
- Exhausted PHP memory limit
- A failed database query or broken file permissions
How to fix it
- Read the server error logThis is non-negotiable — the log names the exact file and line. Find it in your host’s dashboard, cPanel → Errors, or /var/log. The 500 screen tells you nothing; the log tells you everything.
- Rule out .htaccessRename .htaccess to .htaccess_bak and reload. If the site comes back, the file was the culprit — regenerate it (in WordPress, re-save Permalinks).
- Disable the offending plugin or themeIf the log points at a plugin/theme, deactivate it (rename its folder via SFTP if you’re locked out of admin). Reactivate one at a time to confirm.
- Raise the PHP memory limitIf the log mentions "allowed memory size exhausted," bump memory_limit to 256M in php.ini or wp-config.php and retry.
Stop it recurring
Stage and test plugin/theme updates before applying them to production. Keep error logging on so the next 500 is diagnosable in seconds.
Related errors