WordPress 500 Internal Server Error: Real Engineer Fix (2026)
Quick answer
A WordPress 500 Internal Server Error means the server tried to process a request and failed before returning a page. Fix in order: (1) rename .htaccess to .htaccess-old and resave permalinks, (2) raise the PHP memory limit to 256M in wp-config.php, (3) rename /wp-content/plugins to /wp-content/plugins-off to isolate a bad plugin, (4) check the real error in /wp-content/debug.log or the host's error_log.
What a 500 error actually is
A 500 is the server's way of saying "something crashed while I was building your page and I don't know what to tell the browser". WordPress didn't refuse the request — PHP or the web server hit a fatal error mid-execution.
The error text on the page is generic on purpose. The real cause is in the server error log, not the browser. Getting to the log is step zero — every fix below is faster if you have it open.
Fix #1 — Rebuild .htaccess
Connect via SFTP or your host's file manager. In the WordPress root, rename .htaccess to .htaccess-old. Try loading the site. If it works, log in and go to Settings → Permalinks and click Save Changes — WordPress writes a fresh .htaccess with the correct rewrite rules.
This resolves the majority of 500s caused by a corrupted mod_rewrite block after a migration or plugin install.
Fix #2 — Raise the PHP memory limit
Edit wp-config.php and add this line above the "That's all, stop editing" comment:
define('WP_MEMORY_LIMIT', '256M');
If your host caps memory below 256M at the server level, this line won't help — you'll need to raise it in .user.ini or php.ini, or ask the host to bump it. Undersized memory limits are the #2 cause of 500s on shared hosting, especially with WooCommerce or Elementor.
Prefer we just fix it?
Site is down or blocking real customers right now? Our emergency team is live around the clock — median response 12 minutes, flat $149 for the fix. Learn more about emergency WordPress help or grab a slot below.
Fix #3 — Isolate a plugin (the fastest diagnosis)
Rename /wp-content/plugins to /wp-content/plugins-off via SFTP. This deactivates every plugin at once. Load the site. If the 500 is gone, one of your plugins is the culprit.
Rename the folder back to /plugins. In wp-admin, activate plugins one at a time — reload the site between each. The plugin that brings the 500 back is your problem. Update it, replace it, or roll back to the previous version.
Fix #4 — Read the actual error log
Turn on WordPress debug logging by adding these lines to wp-config.php:
define('WP_DEBUG', true); define('WP_DEBUG_LOG', true); define('WP_DEBUG_DISPLAY', false);
Reproduce the 500. Open /wp-content/debug.log — the fatal error, file path, and line number are there in plain text. That single line tells you which plugin, theme, or PHP version incompatibility crashed the request.
Also check your host's error_log (cPanel → Errors, or /home/user/logs/error_log on most hosts). Server-level fatals (memory, permissions, PHP-FPM crashes) show up there and not in debug.log.
When to call for help
If plugins are off, memory is at 256M, .htaccess is rebuilt, and the log points at core WordPress files or PHP-FPM — you're looking at a server-config or PHP-version issue. That usually needs SSH access and someone who's edited PHP-FPM pools before.
WebCare Studios resolves most 500 errors in under 20 minutes on our care plans. If your site's down right now, our emergency rescue starts at $149.
Common questions
What causes a WordPress 500 Internal Server Error?+
The top four causes are: a corrupted .htaccess file, an exhausted PHP memory limit, a plugin fatal error after an update, and a theme conflict. Reading /wp-content/debug.log with WP_DEBUG_LOG enabled tells you which one in about 30 seconds.
How do I fix a 500 error without wp-admin access?+
Use SFTP. Rename .htaccess to .htaccess-old, rename /wp-content/plugins to /wp-content/plugins-off, then reload the site. If either fixes it, you've isolated the cause. You can then log in and troubleshoot from the admin.
Is a 500 error a hack?+
Not usually. Most 500s are misconfigurations, plugin conflicts, or memory limits — not attacks. But a 500 that only appears on wp-admin, or one that started with unfamiliar plugin activity, is worth scanning with Wordfence or asking an engineer to check for injected code.
Why does the 500 error only happen sometimes?+
Intermittent 500s usually mean memory pressure or a database issue. The site works when traffic is low, then crashes when a WooCommerce checkout or a heavy plugin request tips PHP over its memory limit. Raise WP_MEMORY_LIMIT and check MySQL's max_connections setting.
Want help with this?
The pages below go deeper, by service and by city.
Services
Want this handled for you?
Book a call and we will review your site before recommending anything.