Fixing the 500 Internal Server Error in WordPress
The “500 Internal Server Error” is a catch-all: the server only says something went wrong – not what. Still, the typical causes are limited. Work through them in this order, from the most informative to the most involved step.
1. Read the Server Error Log
This is the most important step, because it often names the exact cause. You’ll find the error log in your hosting panel or via FTP (often error_log in the root directory or the affected subfolder). The last line usually reveals the file and reason – for example a “PHP Fatal Error” with a line number. Skip this step and you’re guessing; do it and you often already have the trigger.
2. Test the .htaccess
A corrupted .htaccess is a classic – often after a plugin writes its own rules into it. Rename the file in the root directory to .htaccess_old as a test and reload the site. If it works again, generate a fresh one: in WordPress under Settings → Permalinks, just hit save – WordPress writes a clean .htaccess.
3. Check PHP Limits
Exhausted memory or an exceeded execution time can also trigger a 500, especially during imports or in the admin. Raise the memory limit as a test → increase the WordPress memory limit. If the error disappears afterwards, the limit was the cause.
4. Isolate Plugins and Theme
If the error appeared after an update, deactivate all plugins (rename the /wp-content/plugins/ folder via FTP) and switch to a default theme as a test. If the site returns, reactivate one by one until the trigger appears. This is the most reliable method to isolate a conflict.
5. Turn On Debugging
If the cause stays hidden, make the errors visible. In wp-config.php:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
The details land in /wp-content/debug.log. WP_DEBUG_DISPLAY deliberately stays false so the errors aren’t publicly visible. Turn debugging back off on live sites afterwards.
What Else Might Be Behind It
If it’s still unclear after the five steps, two server-side causes are common: an overly strict mod_security rule at the host blocking a legitimate request (then only the host’s support with the log helps), or wrong file permissions – executable files should be 644, folders 755, not 777. Both show up in the error log, which is why step 1 comes first.
Quick Checklist
- Read the server error log.
- Rename
.htaccess, re-save permalinks. - Check memory/time limits.
- Isolate plugins/theme.
- Use
WP_DEBUG_LOGfor the details.
A broader overview of other WordPress errors is in the overview of WordPress errors.
If you can’t find the trigger or need the site back fast: drop us a line – we’ll locate the 500 and fix it.
Frequently Asked Questions
What does the 500 Internal Server Error mean?
The 500 Internal Server Error is a catch-all: the server only reports that something went wrong while processing the request – but not what. The actual cause is in the server error log. Typical triggers in WordPress are a PHP error in a plugin or theme, a corrupted .htaccess, exhausted memory, or a restrictive server rule.
How do I fix the 500 error in WordPress?
In this order: first read the server error log, which often names the exact file and reason. Then rename the .htaccess as a test and re-save the permalinks, check the PHP limits (memory, execution time), and finally isolate plugins and theme. If the cause stays hidden, WP_DEBUG_LOG makes the errors visible in a log file.
Where do I find the cause of a 500 error?
In the server error log. You'll find it in your hosting panel or via FTP, often as error_log in the root directory or the relevant folder. The last line usually names the affected file and the reason – for example a PHP Fatal Error with a line number. That saves you guessing and often leads straight to the trigger.
Can a plugin cause a 500 error?
Yes, it's one of the most common causes – especially right after an update or when two plugins conflict. To isolate it, deactivate all plugins via FTP (rename the /wp-content/plugins/ folder). If the site returns, reactivate them one by one until the error reappears – then you know the culprit.
Related Services
Founder & Full-Stack Developer
20+ years of web development experience. Specialised in Laravel, WordPress and custom software for mid-sized businesses.