Troubleshooting

WordPress 500 Internal Server Error — How to Fix It

A generic server failure with several possible causes — here's how to find the real one and fix it.

Quick Answer: A 500 internal server error on WordPress usually comes from one of four things: a corrupted .htaccess file, a plugin or theme conflict, exhausted PHP memory, or a PHP version incompatibility. Start by checking your host's error log to see the actual cause. If you can't access it, rename .htaccess to force WordPress to regenerate it, and if that doesn't work, rename the /wp-content/plugins folder to rule out a plugin conflict.

Site Throwing a 500 Error Right Now?

Tell us what's happening and we'll help you get it back up — or take it off your plate entirely going forward.

Why "500" Doesn't Tell You Much

A 500 status code is the web server's way of saying "something went wrong" without specifying what. Unlike WordPress's own critical error message, a 500 can happen at the server level before WordPress code even runs — which means the fix depends entirely on identifying which of a handful of causes is actually responsible, rather than applying one universal fix.

Step 1: Check the Error Log First

Most hosting control panels (cPanel, Plesk, or your host's custom dashboard) have an "Error Log" section that shows the server-level error behind the 500. If you have file access, you can also enable logging in wp-config.php:

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

Reload the site once, then check /wp-content/debug.log. This is the fastest way to see whether you're dealing with a PHP fatal error, a memory limit, or something else — instead of testing fixes at random.

Step 2: Rule Out a Corrupted .htaccess File

Via FTP or your host's file manager, rename .htaccess in the site's root directory to .htaccess-old, then reload the site. If it loads, the original file was corrupted or contained a bad rule. Go to Settings > Permalinks in wp-admin and click Save Changes — WordPress will regenerate a clean .htaccess automatically.

Step 3: Rule Out a Plugin or Theme Conflict

If the log points to a plugin, or you haven't found a clear cause yet, rename the /wp-content/plugins folder via FTP to force-deactivate every plugin at once. If the site loads, rename the folder back to plugins, then reactivate plugins one at a time until the 500 error returns — that's your culprit. If deactivating plugins doesn't help, repeat the same process with your active theme folder in /wp-content/themes.

Step 4: Check PHP Memory and Version Limits

A 500 error can also occur when a script exceeds the PHP memory limit. Add this line to wp-config.php to raise it: define( 'WP_MEMORY_LIMIT', '256M' );. If the site loads after that change, the underlying fix is finding what's consuming so much memory — often a poorly-coded plugin or an oversized import — rather than just raising the ceiling indefinitely. It's also worth confirming your hosting account's PHP version matches what your plugins and theme require; an outdated or mismatched PHP version is a common, easy-to-miss cause.

Why This Happens Right After Changes

Like most WordPress fatal errors, 500s cluster around updates — a plugin update, a core update, or a hosting-side PHP version change. The fix above resolves the immediate outage. The way to stop it recurring is testing every update on a staging environment before it reaches production, so a conflict like this gets caught privately instead of taking the live site down — the same staging and validation process prevents most of the errors on this list.

Related Troubleshooting Guides

Martin Van Den Boogerd
Martin Van Den Boogerd
Founder & Owner, CriticalWP — background in cybersecurity and municipal government infrastructure
More about Martin →

Common Questions

A 500 error is a generic server-side failure — it means something broke on the server before WordPress could even return a page, most commonly a corrupted .htaccess file, a plugin or theme conflict, exhausted PHP memory, or a PHP version incompatibility. The message itself doesn't name the cause, which is why checking the server error log is the first real step.
Check your hosting control panel's error log (or enable WP_DEBUG_LOG in wp-config.php). It will show the specific PHP error behind the generic 500 message — usually a fatal error in a plugin file, a memory limit being hit, or a syntax error in .htaccess.
Often, yes. Rename .htaccess to .htaccess-old via FTP, then try reloading the site. If it loads, the original .htaccess was corrupted — go to Settings > Permalinks in wp-admin and click Save to regenerate a clean one.
Yes, this is one of the most common causes. Rename the /wp-content/plugins folder via FTP to force-deactivate every plugin at once. If the site loads, reactivate plugins one at a time to find the one responsible.
They're related but not identical. A critical error is WordPress's own message for a PHP fatal error it can detect. A 500 error is a broader server-level failure that can happen even before WordPress loads, including server misconfiguration, exhausted resources, or a corrupted .htaccess file.

Stop firefighting server errors after every change.

Managed WordPress operations means every update is tested on staging before it touches your live site — so this error doesn't happen to your customers in the first place.