A WordPress 500 Internal Server Error can make your entire website, wp-admin area, or only a specific page suddenly inaccessible.
The frustrating part is that a 500 error usually does not tell you exactly what went wrong.
It simply means the server could not complete the request because something failed on the server side.
QUICK ANSWER
To fix a WordPress 500 Internal Server Error, first back up your site and check the server error log. Then test the .htaccess file, disable plugins, switch themes, check PHP memory and compatibility, verify file permissions, and investigate recent server or website changes.
What Is a WordPress 500 Internal Server Error?
HTTP status code 500 means the server encountered an unexpected condition and could not complete the request.
You may see messages such as:
- 500 Internal Server Error
- HTTP Error 500
- Internal Server Error
- The server encountered an internal error
The error can affect:
- Your entire WordPress website
- Only wp-admin
- Only one page or post
- Plugin or theme update screens
- Forms, imports, uploads, or AJAX requests
A 500 error is different from a 404 error. A 404 normally means the requested resource was not found, while a 500 error indicates that the server failed while processing the request.
If you are seeing a missing-page problem instead, see our WordPress 404 Error guide.
Before You Start: Check the Error Log
Before randomly changing WordPress settings, check whether your hosting provider gives you access to a PHP, Apache, Nginx, or general server error log.
Reproduce the 500 error and note the exact time.
Then check the newest entries in the error log.
Look for clues such as:
PHP Fatal errorAllowed memory size exhaustedPermission denied- A plugin folder name
- A theme folder name
- A specific PHP file
- ModSecurity or firewall errors
TIP:
The error log is often more useful than the 500 page itself because it may identify the exact file, plugin, PHP problem, or server rule that failed.
1. Reset the .htaccess File
A damaged or incorrect .htaccess file is one of the first things to test on WordPress sites running on servers that use it.
Access your website using your hosting File Manager, SFTP, or FTP.
Open the WordPress root directory. This is normally the same location containing:
wp-admin
wp-content
wp-includes
wp-config.php
Find:
.htaccess
Rename it temporarily to:
.htaccess-old
Now reload the website.
If the 500 error disappears, the old .htaccess file was probably involved.
If you can access WordPress again, go to:
Settings → Permalinks
Without changing anything, click Save Changes.
On a compatible server configuration, WordPress can regenerate its standard rewrite rules.
IMPORTANT:
Do not permanently delete the original .htaccess file before you know what caused the problem. Rename it first so you can restore it if necessary.
2. Disable All WordPress Plugins
A plugin can trigger an HTTP 500 error because of faulty PHP code, an incompatible update, a conflict with another plugin, or a server configuration problem.
If wp-admin still works:
- Go to Plugins → Installed Plugins.
- Select all active plugins.
- Choose Deactivate.
- Reload the page producing the error.
If the error disappears, reactivate the plugins one at a time.
Test the website after each activation until the 500 error returns.
If You Cannot Access wp-admin
Open:
/wp-content/
Rename:
plugins
to:
plugins-disabled
Then test your website again.
If it works, rename the directory back to plugins and investigate individual plugins.
3. Test the Active Theme
If plugins are not responsible, the active WordPress theme may be causing the server error.
This is especially likely when the problem started after:
- A theme update
- Editing functions.php
- Adding custom PHP code
- Changing PHP versions
- Installing a child theme
If the dashboard is available, temporarily activate a default WordPress theme.
If wp-admin is unavailable, use File Manager, SFTP, or FTP and open:
/wp-content/themes/
Rename the directory of your active theme.
Make sure a working default WordPress theme is installed before performing this test.
If the 500 error disappears, investigate the original theme and its custom code before activating it again.
4. Check PHP Memory Limits
A PHP process that runs out of memory can sometimes result in an HTTP 500 response.
Your error log may contain a message similar to:
Allowed memory size exhausted
If you see this message, check the PHP memory limit in your hosting control panel.
WordPress also supports a memory setting in wp-config.php, such as:
define( 'WP_MEMORY_LIMIT', '256M' );
However, your hosting provider may enforce a lower or separate server-level PHP limit.
If increasing memory temporarily fixes the site, do not automatically assume the problem is solved.
A poorly behaving plugin, theme, database query, import process, or background task may still be consuming excessive memory.
5. Check Your PHP Version and Recent PHP Changes
If the 500 error appeared after changing the PHP version, compatibility should be investigated immediately.
Check whether your:
- WordPress version
- Active theme
- Plugins
- Custom PHP code
support the PHP version currently enabled on the server.
A plugin that worked under an older PHP version can fail after the hosting environment is upgraded.
Do not randomly switch through multiple PHP versions on a production website.
If possible, test changes in a staging environment or ask your hosting provider to confirm the correct PHP configuration.
6. Check File and Folder Permissions
Incorrect server permissions can prevent PHP or the web server from reading required WordPress files.
Permissions can become incorrect after:
- A manual migration
- Restoring a backup
- Uploading files with FTP
- Changing server ownership
- Moving WordPress between hosting accounts
Do not solve permission problems by giving every WordPress file full access.
SECURITY WARNING:
Avoid setting WordPress files or directories to permission 777 simply to make an error disappear. Excessively permissive settings can create a serious security risk.
If you are uncertain about ownership or permissions, ask your hosting provider to verify them against the server’s required configuration.
7. Enable WordPress Debug Logging
If the server log does not make the problem clear, WordPress debugging may provide additional information.
Back up wp-config.php before editing it.
Configure:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
Trigger the error again.
Then check:
/wp-content/debug.log
Look at the most recent entries for a fatal PHP error or a reference to a particular plugin, theme, or file.
If WordPress itself displays a critical-error message rather than a generic HTTP 500 page, also see our WordPress Critical Error guide.
REMEMBER:
Disable debugging after troubleshooting. Debug logs can contain technical paths and other information that should not remain unnecessarily exposed on a production website.
8. Check Hosting, Firewall, and Server Configuration
If .htaccess, plugins, themes, PHP memory, and WordPress debugging do not identify the problem, the error may exist outside WordPress itself.
Possible server-level causes include:
- Apache or Nginx configuration
- PHP-FPM problems
- Hosting resource limits
- Execution time limits
- ModSecurity rules
- A web application firewall
- Server ownership or permission problems
- A failed hosting migration
This is particularly important when:
- The error started without any WordPress change
- Only wp-admin is blocked
- Only uploads or imports produce error 500
- Your hosting provider recently changed the server environment
- WordPress debug.log contains nothing useful
Contact your host and provide:
- The affected URL
- The exact time the error occurred
- What you were doing immediately before the error
- The relevant server log entry
- What troubleshooting steps you already completed
This gives support far more useful information than simply reporting that the website shows a 500 error.
Fastest Troubleshooting Order
For most WordPress 500 errors, use this order:
- Back up the website.
- Check the hosting error log.
- Rename .htaccess and test again.
- Disable all plugins.
- Test a default theme.
- Check PHP memory and PHP compatibility.
- Check permissions.
- Enable WordPress debug logging.
- Ask your host to investigate server-level errors.
WordPress 500 Error Quick Checklist
- ☐ Create a backup
- ☐ Reproduce the error and note the time
- ☐ Check the server error log
- ☐ Test .htaccess
- ☐ Disable plugins
- ☐ Test another theme
- ☐ Check PHP memory
- ☐ Check PHP compatibility
- ☐ Check permissions
- ☐ Review recent website changes
- ☐ Enable debug logging if necessary
- ☐ Contact the hosting provider for server-level errors
Frequently Asked Questions
What causes a 500 Internal Server Error in WordPress?
Common causes include a broken .htaccess file, plugin or theme conflicts, PHP fatal errors, memory exhaustion, incorrect server permissions, incompatible PHP versions, and hosting or server configuration problems.
Can a WordPress plugin cause error 500?
Yes. A plugin can trigger an HTTP 500 response if it produces a fatal PHP error, conflicts with another component, exceeds server resources, or is incompatible with the current PHP environment.
Can .htaccess cause a WordPress 500 error?
Yes. A malformed or incompatible .htaccess rule can produce an Internal Server Error on servers that process .htaccess files. Temporarily renaming the file is a common diagnostic step.
Why does wp-admin show error 500 while my website still works?
The problem may affect only an administrative request, plugin, security rule, PHP process, or server configuration used by wp-admin. Check the server error log at the exact time you reproduce the problem.
Is a 500 error the same as a WordPress critical error?
Not exactly. A WordPress fatal PHP error can result in an HTTP 500 response, but an HTTP 500 error can also be caused by web-server configuration, permissions, security rules, resource limits, or other server-side problems outside WordPress.
Final Thoughts
A WordPress 500 Internal Server Error is a server-side failure, so the fastest solution is usually to identify what changed and read the corresponding error log.
Start with .htaccess, plugins, and themes, then investigate PHP memory, PHP compatibility, permissions, and server configuration.
Avoid making multiple major changes at once. Change one thing, test the site, and use the logs to confirm what actually caused the error.