A "500 Internal Server Error" is one of the most frustrating messages WordPress can show, because it tells you almost nothing — no plugin name, no line number, just a blank page and a generic error. The good news: the cause is almost always one of a short list of things, and there's a reliable order to check them in rather than guessing randomly.
What a 500 Error Actually Means
Unlike a 404 (page not found) or 403 (forbidden), a 500 error means the server tried to run your site's code and something inside that process failed — a PHP fatal error, a server resource limit being hit, or a corrupted configuration file. WordPress itself doesn't generate this message; your web server (Apache, LiteSpeed, or Nginx) does, which is why the default error page is so generic.
Step 1: Check Your Error Logs First
Before changing anything, look at the actual error log — guessing wastes time that reading five lines of log output would save. Two places to check:
- WordPress debug log — enable it by adding
define('WP_DEBUG', true);anddefine('WP_DEBUG_LOG', true);towp-config.php, then checkwp-content/debug.logafter reproducing the error - Server error log — usually accessible through your hosting control panel (cPanel → Errors, or Plesk → Logs), and often more specific than the WordPress log alone
The log will almost always point directly at the plugin, theme file, or PHP function that failed — skip straight to the relevant fix below once you have it.
Step 2: Deactivate Plugins One at a Time
Plugin conflicts are the single most common cause of a 500 error, especially right after installing or updating one. If you can access wp-admin, deactivate plugins from the Plugins page. If the error is blocking wp-admin entirely, rename the wp-content/plugins folder via FTP or your hosting file manager — WordPress will auto-deactivate every plugin, and the site should load again immediately, confirming a plugin is the cause.
From there, rename the folder back and reactivate plugins one at a time, reloading the site after each one, until the error reappears — that's your culprit. For a deeper look at diagnosing conflicts between two plugins that only break when both are active together, see our plugin conflict troubleshooting guide.
Step 3: Increase the PHP Memory Limit
If the error log mentions "allowed memory size exhausted," your site is hitting a PHP memory ceiling, usually during an import, a large WooCommerce catalog operation, or a heavy plugin combination. Add this line to wp-config.php, just before the line that says /* That's all, stop editing! */:
define( 'WP_MEMORY_LIMIT', '256M' );
If the error persists, the actual server-level PHP memory limit may need raising too, which usually requires editing php.ini or contacting hosting support — shared hosting plans often cap this lower than a WooCommerce store realistically needs during checkout or bulk product operations.
Step 4: Check for a Corrupted .htaccess File
A broken .htaccess file (from a bad permalink save, a security plugin misfire, or manual editing) can trigger a 500 error sitewide. Rename the file to .htaccess-old via FTP, then reload the site. If that fixes it, go to Settings → Permalinks in wp-admin and click Save — WordPress will generate a clean replacement automatically.
Step 5: Switch to a Default Theme Temporarily
If plugins aren't the cause, the active theme may have a fatal PHP error, often after a theme update or a customization that wasn't tested against the current PHP version. Switch to a default theme (Twenty Twenty-Four or similar) via FTP by renaming your active theme's folder, which forces WordPress to fall back automatically. If the site loads, the theme is the cause and needs its code reviewed line by line rather than guessed at.
Step 6: Confirm PHP Version Compatibility
Older plugins or themes sometimes use PHP syntax that newer PHP versions reject outright, which shows up as a 500 error after a hosting-side PHP upgrade you didn't even initiate. Check your current PHP version under Tools → Site Health → Info in wp-admin, and compare it against what each active plugin lists as supported. Rolling PHP back one version (through your host's control panel) is a fast temporary fix while the real plugin/theme code gets updated.
When the Cause Isn't Obvious
Sometimes a 500 error comes from something outside WordPress entirely — a corrupted core file from an interrupted update, a database connection limit on shared hosting during a traffic spike, or a security plugin blocking a legitimate request as if it were an attack. This is where a WooCommerce/WordPress developer earns their fee: someone who works in server logs daily can usually isolate the actual line within minutes rather than hours of trial and error. See how to hire a WooCommerce developer on a budget for what a fix like this typically costs, or WordPress maintenance plans if 500 errors and similar issues keep recurring and you'd rather have ongoing monitoring catch them before they go live.
If the 500 error appeared alongside strange redirects, new unfamiliar admin users, or unexpected outbound traffic, don't treat it as a routine bug — rule out a compromised site first using our WordPress hacked recovery guide or hacked WordPress site fix cost breakdown before assuming it's a plugin conflict.
Preventing Repeat 500 Errors
A few habits catch most causes before they go live: always test plugin and theme updates on a staging copy first (see our WooCommerce staging site guide), keep PHP memory limits set realistically for a store rather than a blog, and avoid stacking multiple security or caching plugins that touch the same server-level settings. Hosting quality matters here too — a shared server with hard resource caps hits memory and process limits far more easily during traffic spikes than a properly resourced dedicated server built for WooCommerce workloads.
Frequently Asked Questions
What causes a WordPress 500 Internal Server Error?
Most commonly a plugin conflict, a PHP memory limit being exceeded, a corrupted .htaccess file, a theme error, or a PHP version incompatibility. The server error log will usually point to the exact cause.
How do I find the exact cause of a 500 error?
Enable WP_DEBUG_LOG in wp-config.php and check wp-content/debug.log, or check your hosting control panel's error log — both usually name the failing file or function directly.
Will deactivating all plugins fix a 500 error?
If a plugin is the cause, yes, temporarily. Rename the wp-content/plugins folder via FTP to force-deactivate everything, then reactivate plugins one at a time to find the specific one causing it.
Can a corrupted .htaccess file cause a 500 error?
Yes. Rename it via FTP to force WordPress to regenerate a clean version, then re-save your permalink settings in wp-admin.
Is a 500 error a sign my site has been hacked?
Not usually on its own, but if it appears alongside strange redirects, unfamiliar admin accounts, or unexpected traffic, treat it as a possible compromise and check for signs of hacking first.
When should I hire a developer instead of troubleshooting it myself?
If the error log doesn't clearly point to one plugin, or the fix requires server-level PHP/memory configuration changes, a developer familiar with server logs will usually resolve it much faster than continued trial and error.