A white screen or “500 Internal Server Error” looks frightening, but behind it there is usually a specific PHP error: a plugin, theme, memory limit or faulty setting. The key is to make the error visible first and fix only after that.
This guide walks through a low-risk order: logging, excluding plugins and theme, memory limit, .htaccess, PHP version and permissions. Take a backup before every change.
What exactly do you see?
| Symptom | Likely cause | First step |
|---|---|---|
| 500 Internal Server Error | Faulty .htaccess, PHP fatal error or permissions | Server error log, then check .htaccess |
| Completely white page | PHP fatal error with error display switched off | Turn on WP_DEBUG_LOG |
| “There has been a critical error” | A plugin or theme error | Recovery-mode email or excluding plugins |
| Allowed memory size exhausted | Too little PHP memory | Raise the memory limit, look for a heavy plugin |
1. Turn on logging
In wp-config.php, above the “That’s all, stop editing” line, add the lines below. The error goes to wp-content/debug.log and is not shown to visitors.
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );2. Rule out plugins
- Connect with SFTP or the file manager and rename wp-content/plugins to plugins.off.
- If the site returns, rename the folder back, then rename subfolders one by one until you find the faulty plugin.
- Update or replace the faulty plugin, or contact its developer.
3. Try the default theme
Rename the active theme’s folder under wp-content/themes. If a default WordPress theme is installed, the system falls back to it and the site may become available.
4. Memory limit
If the log reports memory exhaustion, first raise the WordPress memory limit.
define( 'WP_MEMORY_LIMIT', '256M' );5. Check .htaccess
Rename the .htaccess file to .htaccess.old. If the site works, save the setting again under Settings → Permalinks in the WordPress dashboard so a fresh file is created. The default block:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress6. PHP version and file permissions
- After an update or a PHP switch, check that the plugins and theme support the new version; if needed, switch back to the previous PHP version in the hosting panel.
- Permissions are usually 644 for files and 755 for directories. Do not set anything to 777; wrong ownership or permissions can also appear after manual copying.
- Check free disk space and the file-count limit, because a full disk can also cause a white page.
If nothing helps
- Restore the last working backup and update carefully, step by step.
- Ask your provider for the server error log at the time of the error.
- If strange files or redirects appeared before the error, also consider the possibility of a compromise.



