An HTTP 500 Internal Server Error means the server encountered an unexpected condition that prevented it from completing the request. It is not a browser or network issue — the problem is entirely on the server side.
This guide covers every common cause of a 500 error and gives you the exact steps to diagnose and fix it, whether your site runs on WordPress, plain PHP, or another CMS.
What exactly is a 500 error?
HTTP status code 500 is the server's generic "something went wrong on my end" response. Unlike a 404 (not found) or 403 (forbidden), the 500 doesn't tell you what went wrong — only that the failure originated on the server.
You may see it displayed in different ways:
- 500 Internal Server Error (standard)
- HTTP Error 500
- There is a problem with the resource you are looking for (Microsoft IIS)
- A blank white screen with no message (common in WordPress with WP_DEBUG off)
The most common causes and how to spot them
1. Corrupted or misconfigured .htaccess file
The .htaccess file controls URL rewriting, redirects, and Apache configuration. A single bad line can instantly trigger a 500 error.
How to check: Rename the file temporarily (e.g., .htaccess_bk) and reload the site. If the error goes away, the file is the culprit. Review it line by line or restore from your latest backup.
For WordPress, the standard permalinks .htaccess block is:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
2. Incorrect file and directory permissions
PHP files should have permissions of 644 and directories 755. If a plugin, a manual edit, or a migration changed them to 777 or 400, Apache may refuse to execute them and return a 500.
Fix via SSH:
find /path/to/your/site -type f -exec chmod 644 {} \;
find /path/to/your/site -type d -exec chmod 755 {} \;
3. PHP errors: out of memory or syntax errors
A PHP script that exceeds the allowed memory limit, or that contains a syntax error, will crash and return a 500. This is very common right after updating a plugin or theme in WordPress.
Enable PHP error logging to diagnose it. Add these lines to php.ini or a .user.ini file in your public_html:
log_errors = On
error_log = /path/to/php_errors.log
display_errors = Off
Then inspect the log. If memory is the issue, increase the limit:
memory_limit = 256M
4. Faulty plugin or theme (WordPress and similar CMS)
If the error appears right after installing or updating a plugin, deactivate it from the WordPress admin — or if you can't log in, rename the plugin folder via FTP/SSH:
mv wp-content/plugins/plugin-name wp-content/plugins/plugin-name_OFF
If the white screen locks you out of the admin entirely, rename the whole plugins folder to plugins_OFF, then re-enable plugins one by one to find the bad one.
5. PHP execution timeout
A script that runs longer than the server allows can produce a 500. Raise the timeout in .user.ini:
max_execution_time = 120
6. Server-side issues or hosting problems
If none of the above resolves the error, the issue may be at the server level: resource exhaustion, a crashed service (MySQL, PHP-FPM), or a mismatch between your PHP version and the CMS requirements.
Check that you're running the PHP version your CMS recommends. WordPress recommends PHP 8.1 or newer. Upgrading from 7.4 often fixes compatibility errors. If in doubt, contact your hosting provider and share the exact error log messages.
Diagnostic steps in logical order
- Check server error logs (Apache error_log or PHP log). This is always step one.
- Disable the .htaccess temporarily by renaming it, then reload.
- Verify file permissions: 644 for files, 755 for directories.
- Deactivate plugins one by one to identify the culprit.
- Check PHP memory limit and timeout in your configuration files.
- Switch to a default theme (Twenty Twenty-Four in WordPress) to rule out the active theme.
- Contact your host with the exact log messages.
Tools to find the error fast
| Tool | What it shows | Where to access it |
|---|---|---|
| Apache error log | Exact failure message | cPanel → Error Logs / SSH |
| PHP error log | Syntax and memory errors | Path defined in php.ini |
| WP_DEBUG (WordPress) | Full error trace on screen | wp-config.php (dev only) |
| Query Monitor (plugin) | Slow queries, hook errors | WordPress admin toolbar |
A professional web maintenance team monitors these logs continuously and resolves 500 errors before they impact your visitors.
How to prevent 500 errors going forward
Fixing a 500 error once is only half the job. Preventing it from recurring requires disciplined maintenance habits:
- Back up before every update — plugins, themes, and core CMS updates alike.
- Use a staging environment to test changes before pushing them to production.
- Set up uptime monitoring with tools like UptimeRobot or BetterUptime to catch outages instantly.
- Keep PHP updated to the latest stable version compatible with your stack.
- Review memory and timeout limits whenever you install resource-heavy plugins (page builders, WooCommerce, etc.).
For more strategies to keep your site fast and reliable, browse our web performance and maintenance guides.
Key takeaways
- A 500 error always originates on the server — never in the visitor's browser.
- Always check the error logs first; diagnosing without them is guesswork.
- A corrupted
.htaccessand wrong permissions are the most common — and easiest to fix — causes. - In WordPress, a faulty plugin or theme is the second most frequent culprit.
- Raising PHP memory and timeout limits resolves many 500 errors caused by resource-heavy scripts.
- Prevention — backups, staging, and monitoring — keeps a one-off error from becoming a crisis.
Still getting a 500 error and can't pinpoint the cause? Reach out to us at elenlace.com — our technical team reviews your logs, identifies the root cause, and gets your site back online fast.
FAQ
Does a 500 error hurt my Google rankings?
It can, if the error lasts for more than a few hours. Googlebot records persistent 500 responses as a reliability signal and may reduce how often it crawls your site. A brief outage of a few minutes rarely causes lasting SEO damage, but a prolonged downtime can affect crawl budget and rankings.
Can I diagnose a 500 error without SSH access?
Yes. Most hosting control panels (cPanel, Plesk) include an error log viewer. You can also temporarily enable WP_DEBUG in WordPress to display the error on screen — just remember to disable it again before going back to production.
How long does it take to fix a 500 error?
With log access, the most common causes — bad .htaccess, permissions, or a rogue plugin — can be identified in 5 to 15 minutes. Without log access, troubleshooting takes longer. A host with 24/7 technical support makes a significant difference in resolution time.
Is a WordPress white screen the same as a 500 error?
Not exactly, but they often share the same root cause. The "white screen of death" in WordPress is a 500 error with WP_DEBUG disabled, which suppresses the error message. Enabling WP_DEBUG reveals the actual PHP failure message so you can fix it directly.
Useful resources
Other providers and guides worth comparing: