Diagnosing WordPress White Screen of Death Using Server Error Logs
The WordPress white screen error logs point directly to the underlying fatal PHP crashes or memory exhaustion issues that cause your site to render a completely blank page. When your visitors see nothing instead of your content, server logs capture the exact script, line number, and error message responsible for the failure. By enabling and reading these logs, you can bypass guesswork and resolve the root cause in minutes.
Before diving into complex code debugging, it is always wise to confirm whether your entire server is unreachable or just your WordPress application. You can use the Website Down Checker to quickly verify if your domain is experiencing a global outage or just returning an internal application error, helping you separate server-level network failures from PHP script crashes.
Understanding the WordPress White Screen of Death
The White Screen of Death, commonly abbreviated as WSoD, occurs when PHP encounters a fatal error during page execution but is configured to suppress error output on the frontend for security reasons. Instead of displaying a descriptive stack trace to your visitors, WordPress simply halts execution and sends an empty HTTP 200 or HTTP 500 status code response. Because the web server receives no output from the PHP processor, the browser renders a blank white screen.
Common triggers for this behavior include memory limit exhaustion, faulty theme or plugin updates, PHP version incompatibilities, or corrupted core files. While disabling plugins via FTP is a common trial-and-error approach, reading your server error logs provides immediate, undeniable proof of what went wrong.
Locating and Enabling WordPress Error Logs
By default, WordPress hides error reporting to protect sensitive database credentials and file paths from potential attackers. To diagnose the WSoD, you need to enable debugging and locate your server error logs.
Enabling WP_DEBUG in wp-config.php
Connect to your hosting account via FTP or File Manager, locate your root directory containing wp-config.php, and download a backup copy. Open the file in a plain text editor and look for the following line:
define( 'WP_DEBUG', false );
Change this setting to true, and add lines to instruct WordPress to log errors to a file rather than displaying them on the screen:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_DISPLAY', false );
define( 'WP_DEBUG_LOG', true );
Save the file and upload it back to your server. WordPress will now record all warnings, notices, and fatal errors in a file named debug.log located inside your wp-content directory (/wp-content/debug.log).
Accessing Web Server Error Logs
Depending on your hosting environment, your web server maintains its own error logs outside of WordPress. You can find these through your hosting control panel's metrics or file manager sections, or via SSH:
- Apache: Usually located at
/var/log/apache2/error.logor/usr/local/apache/logs/error_log. - Nginx: Usually located at
/var/log/nginx/error.logor within your site-specific virtual host directory. - cPanel: Navigate to the Metrics or Software section and select Errors to view the last 300 server error log entries.
Analyzing Common Log Entries
Once you access your error logs, you must know what to look for. Fatal PHP errors explicitly state the nature of the failure, the file path, and the exact line number.
Memory Exhaustion Errors
A memory limit error looks like this in your logs:
[15-Oct-2023 12:45:22 UTC] PHP Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 20480 bytes) in /home/example/public_html/wp-includes/class-wp-image-editor.php on line 124
This indicates that a script (in this case, image processing) tried to consume more RAM than allocated by your PHP configuration. To fix this, increase your memory limit in wp-config.php by adding:
define( 'WP_MEMORY_LIMIT', '256M' );
Call to Undefined Function Errors
[15-Oct-2023 13:10:05 UTC] PHP Fatal error: Uncaught Error: Call to undefined function wp_craft_plugin_init() in /home/example/public_html/wp-content/plugins/broken-plugin/broken-plugin.php:45
This error points directly to a broken plugin. The function wp_craft_plugin_init does not exist, usually because a plugin update was interrupted or is incompatible with your current WordPress core version.
Plugin and Theme Conflict Resolution Table
| Log Indicator | Root Cause | Immediate Remediation Step |
|---|---|---|
.../wp-content/plugins/plugin-name/... |
Faulty or incompatible plugin | Rename the plugin folder via FTP to trigger auto-deactivation. |
.../wp-content/themes/theme-name/... |
Broken theme functions.php | Switch to a default theme (Twenty Twenty-Four) via database or FTP. |
.../wp-includes/... |
Corrupted WordPress core file | Re-upload core files (wp-admin, wp-includes) via FTP. |
Allowed memory size exhausted |
Low PHP memory allocation | Increase WP_MEMORY_LIMIT in wp-config.php or php.ini. |
Step-by-Step Troubleshooting Procedure
Follow this structured sequence to resolve a white screen of death using your logs:
Reproduce and Monitor: Open your terminal and tail the live error log if you have SSH access:
tail -f /home/example/public_html/wp-content/debug.logRefresh your browser window pointing to your WordPress site to generate a fresh log entry.
Identify the Culprit File: Read the output from the log tail. Look for the absolute path following
in /home/example/public_html/wp-content/....Isolate the Component: If the path references a specific plugin, use FTP to navigate to
/wp-content/plugins/and rename that specific plugin folder toplugin-name-disabled.Test Frontend Rendering: Refresh your website in an incognito browser window. If the white screen disappears, you have successfully isolated the faulty extension.
Review PHP Version: If multiple plugins throw syntax errors, check your server's active PHP version. You can verify your environment using a quick curl command or your control panel:
curl -I https://example.comEnsure your hosting account runs a supported PHP version matching your plugins (e.g., PHP 8.1 or 8.2).
Common Mistakes and How to Fix Them
- Leaving WP_DEBUG Enabled in Production: Keeping debug mode active indefinitely exposes sensitive path disclosures and system details to the public. Always set
WP_DEBUGback tofalseonce troubleshooting is complete. - Ignoring File Permissions: Uploading error log handlers or editing files with root-only permissions can trigger permission denied errors (
AH00129or HTTP 500). Ensure your WordPress files are owned by the web server user (e.g.,www-dataorapache) with644for files and755for directories. - Confusing Nginx and Apache Logs: If you are running a reverse proxy setup where Nginx sits in front of Apache, check both log files. Nginx logs 502 Bad Gateway errors, while Apache logs the actual PHP fatal errors.
Quick Checklist for WSoD Resolution
- Enable
WP_DEBUGandWP_DEBUG_LOGinwp-config.php. - Trigger a page reload to write a fresh entry to
/wp-content/debug.log. - Check web server error logs (Apache/Nginx/cPanel) for system-level faults.
- Isolate and rename offending plugins or themes via FTP or File Manager.
- Increase the PHP memory limit if memory exhaustion errors appear.
- Disable debugging in
wp-config.phpafter restoring site access.