A white screen is not one error. The server may return 500, produce a zero-byte or truncated body with 200, affect only wp-admin, or a cache/CDN may serve stale empty output. The first step is to measure scope and the real HTTP response, not to disable plugins blindly.
curl -sS -D /tmp/headers.txt -o /tmp/body.html https://example.com/
sed -n '1,20p' /tmp/headers.txt
wc -c /tmp/body.html
tail -n 120 wp-content/debug.log
wp plugin status
wp theme statusA browser may appear blank even when HTML exists or JavaScript/CSS hides the content. Measuring status, headers and body size with `curl` confirms whether the server truly returned an empty response. Then compare WordPress debug.log with PHP-FPM, Apache, Nginx or LiteSpeed logs in the same time window.
Test homepage, a single post, wp-login.php, wp-admin and REST API separately. If only one template or endpoint fails, disabling everything is unnecessary.
A 500, a zero-byte 200, a truncated 200 and a redirect loop point to different causes. Save headers and the actual body.
If failure occurs before WordPress starts, debug.log may remain empty. PHP-FPM pool, Apache error_log, Nginx error.log or LiteSpeed stderr then become decisive.
This reveals status, Content-Type, redirects and whether the body is truly empty. Comparing CDN and origin requests can expose caching differences.
curl -sS -D /tmp/wp-headers.txt -o /tmp/wp-body.html https://example.com/
sed -n '1,25p' /tmp/wp-headers.txt
wc -c /tmp/wp-body.html
head -c 300 /tmp/wp-body.htmlDifferences among frontend, login, admin and REST may point to theme templates, admin plugins or rewrites. View status codes together.
for u in / /wp-login.php /wp-admin/ /wp-json/; do
curl -sS -o /dev/null -w "$u %{http_code} %{size_download}\n" "https://example.com$u"
doneEnable WordPress logging without displaying errors. Reproduce the screen once and read the latest lines. If no file is written, check wp-content permissions and the PHP error log.
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
@ini_set('display_errors', 0);A timeline of deployments, plugin/theme updates, PHP changes or cache rules accelerates diagnosis.
wp core version
php -v
wp plugin list --status=active --fields=name,status,version,update
wp theme list --status=active --fields=name,status,version,update
find wp-content -type f -mmin -180 | head -80Before repair, capture wp-content, wp-config.php and the database as one timestamped set. Plan around live orders or form submissions.
Compare homepage, a content URL, wp-login.php, wp-admin and wp-json using a private window and another network. If only one user or device is affected, investigate browser/cache layers.
Do not treat a 500 and an empty 200 as the same. Record Content-Type, Content-Length, redirect chain, body size and initial HTML bytes.
Reproduce once, then immediately inspect WordPress, PHP and web-server logs. Review `Fatal error`, `Uncaught`, `memory`, `permission denied` and `upstream sent` entries in context.
If the path names a plugin or theme, disable only it or roll back to the last working version. If logs are absent, use WP-CLI skip flags and controlled comparisons.
After the app is fixed, stale empty output may remain in object/page cache, OPcache or CDN. Clear layers in order and compare origin with public URL again.
Test login, admin, forms, AJAX/REST, cron, email and payments in addition to the homepage. Confirm no new fatal error or warning storm appears.
Usually a PHP fatal error, web-server rule, permission problem or upstream crash. Prioritize PHP-FPM/Apache/Nginx logs for the request timestamp.
Code may exit early, clear output buffers, return incorrectly from a custom endpoint or cache an empty response.
Possible causes include CSS visibility, an overlay, JavaScript failure, missing assets or a browser extension. Inspect source, Console and Network.
Admin-only hooks, role-dependent code, admin AJAX or different memory use may be involved. A working frontend does not prove the whole site is healthy.
Plugin/theme PHP fatal errors and memory exhaustion are common, but empty 200 responses, cache, permissions, web-server or frontend issues also occur. Status and logs are required.
Often yes. If bootstrap hits the same fatal error, some commands may work with `--skip-plugins` and `--skip-themes`; mu-plugins may still load and require separate inspection.
No. The failure may occur before WordPress, logging may lack permission or PHP may use another target. Check PHP-FPM, Apache, Nginx/LiteSpeed and hosting-panel logs.
It may restore access if a plugin is responsible, but disables all plugins and does not prove the root cause. Target the logged plugin first whenever possible.
No. A 200 response may contain zero bytes, truncated HTML or an application error page. Inspect body, functionality and logs.
Contact Eka Software and Information Systems for installation, server, script and technical support services.