500 Internal Server Error in WordPress
Fix a WordPress 500 error by checking plugins, themes, PHP memory, debug logs, .htaccess, permissions, and recent changes.
Start here
Quick Answer
Start with the PHP error log and recent WordPress changes. If wp-admin is unavailable, disable plugins safely from the filesystem, switch to a default theme only when needed, regenerate permalinks, and verify memory limits and file permissions.
WordPress-specific diagnosis
A WordPress 500 often comes from a PHP fatal error, a plugin/theme conflict, a broken .htaccess rewrite, exhausted memory, or a mismatch after a PHP version change. If wp-admin is unavailable, start with the plugin isolation guide instead of repeatedly reloading the broken page.
Debug safely
When you can edit files, add debug logging above the line that says to stop editing in wp-config.php, then remove or disable public display after you capture the error.
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
Managed hosting vs VPS checks
On managed hosting, collect the URL, timestamp, plugin/theme changed, PHP version, and the latest PHP error log line for support. On a VPS, also check web server logs, PHP-FPM status, disk space, and recent deploys. If database credentials changed during migration, use the wp-config.php database settings guide.
Diagnosis
Symptoms
- Public pages or wp-admin return 500, white screen, or a generic host error.
- The error started after a plugin, theme, PHP version, permalink, or file permission change.
- PHP logs mention fatal errors, memory exhaustion, syntax errors, or missing files.
Common causes
- Plugin or theme fatal error.
- Broken
.htaccessor rewrite rules. - PHP memory limit, extension, or version mismatch.
- Incorrect file permissions or missing WordPress core files.
- Database errors surfacing as application failures.
Diagnostic Checklist
- Capture the failing URL, timestamp, and exact response code.
- Open PHP and hosting error logs before changing files.
- Disable plugins safely if logs point at plugin code or wp-admin is unavailable.
- Check
.htaccess, permalinks, memory limits, and recent deploys.
Fixes
Find the first PHP fatal error
- 10 minutes
- Risk: low
- Developer
- WordPress, PHP
Use the first fatal error line to avoid blind plugin or theme changes.
- Open host, PHP, and WordPress debug logs.
- Search the timestamp of the failed request.
- Identify the first fatal error, file path, plugin/theme, and line number.
- Apply the smallest fix: disable the failing plugin, restore a file, or roll back the update.
The 500 is tied to a specific PHP component or configuration.
If logs are not available, isolate plugins and themes with a backup in place.
Reload the failing URL and confirm the fatal error no longer appears.
Restore disabled components that were not responsible.
Disable plugins without wp-admin
- 10 minutes
- Risk: medium
- Site owner
- WordPress
Recover access when a plugin prevents the site or dashboard from loading.
- Back up the current plugin folder list.
- Rename
wp-content/pluginstoplugins.disabled. - Test the site and wp-admin.
- Rename it back and isolate plugins one by one if the site recovers.
The site loads or the failing plugin is isolated.
If disabling plugins does not help, restore the folder name and check theme, PHP, and rewrite errors.
Confirm public pages and wp-admin both respond.
Return unaffected plugins to their original state.
Platform notes
On nginx hosts, a severe WordPress PHP failure may surface as 500 or 502 depending on where the response fails. Use the exact status code and logs to choose the right path.
FAQ
Can I fix a WordPress 500 from wp-admin?
Sometimes. If wp-admin also fails, use filesystem or hosting tools instead of relying on the dashboard.
Should I increase PHP memory first?
Only when logs show memory exhaustion. Otherwise it can hide the real plugin or theme failure.
Review notes
- Last reviewed
- 2026-05-05
- Reviewed by
- FaultForge Editorial Team, Web operations reviewer
- Tested on
WordPress plugin/theme isolation, PHP error log review, wp-config.php checks, nginx/PHP-FPM gateway checks, and managed-hosting escalation paths.