A 500 error is the least informative message on the web. It means something on the server went wrong, and the server has decided not to tell you what. Visitors see a generic page. You see the same generic page.
Fixing a 500 internal server error WordPress problem is almost entirely about one thing: getting the server to say what actually failed. Once you have that, the fix is usually straightforward.
Start with the error log, not the guesswork
Most people begin by disabling plugins at random. Skip that. The server already wrote down what went wrong.
Look in these places, in this order:
- Your hosting panel's error log. cPanel, Plesk and most managed hosts have one. It is usually the fastest route.
- An
error_logfile in your site's root folder or insidewp-content. - The WordPress debug log. Add
define('WP_DEBUG', true);anddefine('WP_DEBUG_LOG', true);towp-config.php, reload the page, then readwp-content/debug.log.
Read the last entries first. You are looking for a fatal error naming a file and a line number. That single line usually identifies the plugin, theme or function responsible.
Cause 1: A broken .htaccess file
The quickest thing to rule out. A malformed rule in .htaccess produces a 500 error across the whole site.
Rename the file to .htaccess-old and reload. If the site returns, the file was the problem. Log into WordPress, go to Settings then Permalinks, and click Save without changing anything. WordPress writes a fresh, correct file.
If you had custom rules — redirects, caching directives, security rules — add them back one at a time so you can see which breaks it.
Cause 2: PHP memory exhausted
A script asks for more memory than the server allows and PHP stops mid-request. The log will say something about allowed memory size being exhausted.
Raise the limit in wp-config.php:
define('WP_MEMORY_LIMIT', '256M');
If nothing changes, the cap is set at server level and your host must raise it. Worth asking why the site suddenly needs more memory though — a sudden jump usually means a plugin is doing something inefficient.
Cause 3: A plugin or theme fatal error
This is the most common cause overall, and the log names it directly. A plugin calls a function that no longer exists, or clashes with another plugin after an update.
If the log names a plugin, rename that plugin's folder inside wp-content/plugins. That deactivates it without needing admin access. Reload the site.
If you cannot reach the admin and the log is unhelpful, rename the whole plugins folder to disable everything, confirm the site returns, then rename it back and disable plugins individually.
Cause 4: A PHP version mismatch
Hosts upgrade PHP, sometimes without much warning. Code written for an older version can fatal-error on the new one. If your 500 error appeared with no changes on your side, check whether your PHP version changed recently.
The fix is to update the offending plugin or theme. Moving PHP back a version buys time, but it is a temporary measure — old PHP versions stop receiving security patches, which creates a bigger problem than the one you solved.
Cause 5: File permissions
Less common, but it happens after a migration or a clumsy bulk change. Folders should generally be 755 and files 644. If a file is set to 777, some servers refuse to execute it outright — and it is a security risk regardless.
Cause 6: Corrupted core files
An interrupted update or a failed transfer can leave core files incomplete. Download WordPress at your version, and replace wp-admin and wp-includes completely. Leave wp-content and wp-config.php alone.
When the 500 error is a symptom of something worse
Occasionally the error is not a bug. Malicious code that fails partway through throws a fatal error like anything else, and some infections break the site as they run.
Be suspicious if the log points to a file you do not recognise, if the error appeared with no changes made, if it returns after being fixed, or if there are admin users you did not create. Our guide to removing malware from WordPress covers what to look for.
A sensible order to work through
- Read the error log and find the fatal error
- Rename
.htaccessand reload - Raise the PHP memory limit
- Disable the plugin the log names, or all plugins if it names none
- Switch to a default theme
- Replace WordPress core files
- Check permissions and PHP version
If you fix a 500 error without ever knowing what caused it, you have not fixed it. You have moved it.
What it costs while it runs
Unlike a slow page or a broken layout, a 500 error is total. Nobody reaches your site — not customers, not search engines. If Googlebot repeatedly hits 500 responses, it slows crawling, and prolonged outages can affect rankings.
For an ecommerce site, the cost is direct and immediate. This is one of the errors where a fast, correct diagnosis matters more than a cheap one.
Preventing the next one
Most 500 errors follow a change that was never tested. Use a staging site for updates. Keep automatic backups so rollback is an option. Stay on a supported PHP version deliberately rather than being moved onto one. Remove plugins you do not use. And run uptime monitoring so you find out before your customers do.
Our managed website plans cover exactly that routine — tested updates, backups, monitoring — so these errors are caught early instead of on a Saturday morning.
Still seeing a 500?
If the log is unclear or you have worked through the list without success, our WordPress error fixing service can take it from here. We find the actual cause, fix it, and explain plainly what went wrong.
Get in touch with your web address and anything from the error log — that usually gets us most of the way there.
Get Shielded
We build, host, secure and monitor business websites — cleaning up hacks and keeping sites online for clients across the UK, USA, Australia and the UAE.