500 Internal Server Error
Web/HTTP
High severity
HTTP 500 — Internal Server Error
The server hit an unhandled exception. The real cause is in the server logs, not the browser.
Last reviewed 2026-08-29 by the Tech Issue Guide team.
Symptoms
- “500 Internal Server Error” or “The server encountered an internal error.”
- It appeared right after a deploy, a plugin update, or an edit to a config file.
- Some pages work; dynamic ones fail.
What causes 500 Internal Server Error
- An unhandled exception or fatal error in the application code.
- A broken .htaccess directive or wrong file permissions (often after upload).
- The database is unreachable or a required environment variable is missing.
- The PHP/Node/app process ran out of memory or crashed.
How to fix it — 3 steps
- Reload once in case it was transient; if it persists, open the application and web-server error logs and read the stack trace.
- Roll back the most recent deploy, plugin, or config change; verify database connectivity and environment variables.
- For PHP sites, temporarily rename .htaccess to test, check for a syntax/fatal error, then restart the app or PHP-FPM service.
Terminal / CLI command
tail -n 100 /var/log/nginx/error.log
journalctl -u your-app -n 100 --no-pager
Apache logs are usually /var/log/apache2/error.log; app frameworks also write their own log under the project directory.
How to confirm the fix: The page returns 200 and the error log stops recording the exception.
Prevent it from coming back
Deploy behind a staging environment, keep error logging on server-side, and add health checks after deploys.
Frequently asked questions
The page is blank instead of showing 500 — same thing?
Often yes — a “white screen” is a 500 with error display turned off. Enable display_errors on a staging copy or read the logs.
It is a WordPress site — quick checks?
Rename the plugins folder to disable all plugins, switch to a default theme, and regenerate .htaccess by re-saving permalinks.