WordPress Hosting

How to Fix WordPress White Screen on Server

Written by Jack Williams Reviewed by George Brown Updated on 31 January 2026

Introduction: Why WordPress Shows a White Screen

The WordPress White Screen — often called the White Screen of Death (WSOD) — is a common, frustrating failure mode where a site displays a blank page instead of content. This can be caused by server issues, PHP errors, memory exhaustion, corrupt core files, or broken plugins/themes. Understanding the root cause matters because fixes range from quick config edits to server-level debugging. In this guide you’ll find practical troubleshooting steps, specific commands, and recovery patterns that experienced admins use to restore a site quickly and prevent recurrence. Expect actionable examples, error-log diagnostics, and a prioritized recovery checklist you can follow under pressure.


Identifying Server vs. Theme or Plugin Problems

When diagnosing the White Screen, the first objective is to determine whether the failure is coming from the server environment or from an application layer such as a plugin or theme. Start by isolating layers:

  • Try loading a static HTML file on the same server. If static files return normally, the webserver (Nginx/Apache) and connectivity are likely fine, suggesting an application-level issue.
  • Temporarily enable WP_DEBUG and WP_DEBUG_LOG in wp-config.php to capture PHP errors. Add:
    define(‘WP_DEBUG’, true);
    define(‘WP_DEBUG_LOG’, true);
    define(‘WP_DEBUG_DISPLAY’, false);
    This writes errors to wp-content/debug.log without exposing them to public users.
  • Replace the active theme by switching to a default WordPress theme (TwentyTwenty or similar) via the database or filesystem to see if the problem resolves.
  • Disable plugins to check whether a plugin conflict triggers the white screen (see the dedicated section below).

If you suspect hosting limits or environment misconfiguration (PHP/FPM, file permissions, or missing modules), consult resources for managed WordPress environments — for example, guidance on WordPress hosting can help you compare hosting-related causes and fixes. A methodical isolation approach saves time: differentiate server-level errors from application-level errors before making destructive changes.


Using Error Logs to Pinpoint Failures

Effective debugging relies on reading the right error logs. Key logs to check:

  • PHP error log — locations vary: /var/log/php-fpm.log, /var/log/php7.4-fpm.log, or configured via php.ini (error_log).
  • Webserver error logsApache: /var/log/apache2/error.log; Nginx: /var/log/nginx/error.log.
  • WordPress debug logwp-content/debug.log when WP_DEBUG_LOG is enabled.
  • Application-level logs (object-cache, reverse proxy logs) for caching layers or CDNs.

Look for patterns: “Allowed memory size exhausted”, fatal errors pointing to a plugin file, or repeated warnings about headers already sent. Use grep/awk to search large logs quickly:
tail -n 200 /var/log/nginx/error.log | grep -i -E “fatal|error|warning|memory|timeout”

If you have centralized monitoring or alerting tools, correlate the timestamp of the white screen with CPU, memory, and PHP-FPM spikes. For teams running observability workflows, integrating with devops monitoring and setting alerts for 500 responses or PHP-FPM slow workers reduces time-to-diagnose. Always preserve logs before restarting services; ephemeral logs often disappear after a service restart, removing crucial forensic evidence.


Common PHP Limits That Break WordPress

Many white screens originate from exceeding PHP resource limits. Common culprits:

  • memory_limit — WordPress and heavy plugins (page builders, importers) can need 128MB, 256MB, or more. If you see Allowed memory size exhausted, increase memory temporarily:
    ini_set(‘memory_limit’, ‘256M’);
    or edit php.ini: memory_limit = 256M
  • max_execution_time — long-running operations (imports, backups) can hit max_execution_time (default 30s). Raise to 60–300s where appropriate.
  • post_max_size and upload_max_filesize — large media or import files require larger values to avoid truncation.
  • max_input_vars — when saving large option arrays (many widgets or menu items), defaults like 1000 may be insufficient.
  • opcache and realpath_cache_size — aggressive opcache settings without restarts can return stale code or memory issues.

Modifying PHP limits depends on your environment: php.ini, .user.ini, per-pool PHP-FPM config, or .htaccess (on Apache). For repeatable deployments, incorporate sensible defaults into your deployment automation — see deployment best practices for version-controlled configuration and rollback-safe changes. When increasing limits, weigh the trade-off: higher limits reduce failures but can mask memory leaks in plugins or theme code. Monitor after changes to confirm the fix without undesirable side effects.


How to Safely Disable Plugins and Themes

A plugin or theme conflict is a frequent cause of the White Screen. Safe disabling methods:

  • WP-Admin: If accessible, deactivate plugins in Plugins > Installed Plugins and switch to a default theme under Appearance > Themes.
  • FTP/SFTP or File Manager: Rename wp-content/plugins/ to plugins-disabled to quickly disable all plugins. Then restore the folder name and enable plugins one-by-one to isolate the culprit.
  • WP-CLI: Preferred for speed and auditability:
    wp plugin deactivate –all
    wp theme activate twentytwentyone
    WP-CLI also supports listing plugin status: wp plugin list
  • Database toggle: In wp_options, set active_plugins to a serialized empty array; use this only if you understand PHP serialization.

When isolating a faulty plugin, enable WP_DEBUG and check debug.log for stack traces showing the plugin file and function. Test in a staging environment before reactivating. For production recovery, use WP-CLI to avoid race conditions and reduce downtime.

If plugin conflicts relate to performance or monitoring, consult devops monitoring guidance to set thresholds and alerts for plugin-induced resource spikes. Always maintain backups before mass plugin changes and use staging when possible.


Repairing Corrupt Core Files Without Reinstalling

Corrupt or missing WordPress core files (wp-includes, wp-admin) can produce blank pages. You can repair selectively without a full reinstall:

  • Verify checksums with WP-CLI:
    wp core verify-checksums
    This checks local core files against the checksum of the installed WordPress release.
  • Replace only corrupted directories: download the matching WordPress release (zip), extract wp-admin/ and wp-includes/, and copy them into the site via rsync:
    rsync -av –delete wordpress/wp-admin/ /var/www/html/wp-admin/
    rsync -av –delete wordpress/wp-includes/ /var/www/html/wp-includes/
  • Keep wp-content/ untouched to preserve themes/plugins/uploads.
  • Check file and directory permissions: files should be 644, directories 755, and the webserver user (www-data/nginx) must own or have the correct group permissions depending on your security model.
  • Use version control for deployment: If your site uses git for code, compare the production tree against the release branch, and revert only the altered files instead of reinstalling.

If you have shell access, verify PHP opcode cache (OPcache) consistency after replacing files by restarting PHP-FPM:
systemctl restart php7.4-fpm
Replacing just the corrupted pieces minimizes downtime and keeps your configuration intact. For managed environments, coordinate with the host to avoid conflicts with automated updates.


Database Checks That Often Solve White Screens

The WordPress database is a frequent source of errors: corrupt tables, serialized options, or misconfigured site URLs can all produce a white screen.

Useful checks and fixes:

  • Run MySQL/MariaDB table checks:
    mysqlcheck -u root -p –check –auto-repair –all-databases
    Or for a single database:
    mysqlcheck -u user -p –auto-repair your_wp_database
  • Use the WordPress built-in repair tool. Add to wp-config.php:
    define(‘WP_ALLOW_REPAIR’, true);
    Then visit: https://example.com/wp-admin/maint/repair.php
    (Disable the constant after repair.)
  • Inspect wp_options for oversized or corrupted serialized entries. Incorrectly migrated serialized data (e.g., from search/replace operations) will break PHP unserialize() and can trigger blank pages.
  • Check siteurl and home values in wp_options if the site was moved or domain changed — mismatches sometimes break theme/plugin routing and cause blank pages.
  • Run WP-CLI database commands:
    wp db check
    wp db repair
    wp search-replace ‘http://old’https://new’ –skip-columns=guid –recurse-objects
  • If you rely on external object caches (Redis, Memcached), flush caches: redis-cli FLUSHALL or appropriate memcached commands, because stale or corrupt object cache entries can return invalid PHP objects.

Always take a database dump before repair:
wp db export before-repair.sql
Databases are often the last line of defense — careful inspection and non-destructive repair commands prevent data loss while restoring site function.


Server Configuration Tweaks to Prevent Recurrence

Once you fix the immediate white screen, hardening the server configuration reduces the chance of reoccurrence. Key areas to tune:

  • PHP-FPM: Configure appropriate pm.max_children, pm.start_servers, pm.max_requests to prevent process exhaustion. Monitor slow responses and adjust pool values based on memory per process.
  • Webserver timeouts: Increase proxy_read_timeout, fastcgi_read_timeout, or Timeout in Apache for long-running operations, but pair with sensible execution limits.
  • File system and permissions: Ensure safe permissions (files 644, folders 755) and restrict write access to only required directories (wp-content/uploads, wp-content/cache). Use immutable flags carefully for high-security setups.
  • Security modules: Use ModSecurity or WAF rules to block malicious requests but ensure rules don’t block legitimate POST payloads and cause blank responses.
  • Logging and rotation: Configure logrotate for large logs and ensure logs persist across rotations. Centralized logging reduces the time-to-diagnose.
  • Backups and atomic deploys: Implement automated backups and a deployment strategy that supports quick rollback. Use transactional or atomic file moves to prevent partial deployments that can create mixed-version file sets.

Consider integrating server management best practices from server management resources, including routine audits, configuration-as-code, and role-based access control, to maintain a stable, auditable environment. Preventing recurrence requires both configuration and process improvements — not just one-off fixes.


Performance and Memory: When Hosting Is Blame

Hosting selection and configuration critically affect WordPress stability. Shared and low-tier hosting can trigger the white screen under load due to resource contention:

  • Shared hosting: Often enforces low memory_limit, CPU throttling, and process caps. For high-traffic or plugin-heavy sites, this can cause repeated WSOD incidents.
  • VPS or dedicated: Offers control over PHP, webserver, and cache layers, enabling tuning of opcache, object cache, and swap. Sizes should be provisioned based on typical memory footprint — for example, a WordPress site with 50 plugins and a page builder may require 512MB–2GB RAM on the server depending on traffic.
  • Managed WordPress: Provides optimized stacks and automatic updates but can be limited in customizations. Evaluate their PHP limits and plugin policies before migrating critical workflows.
  • Caching and CDN: Implementing page cache, object cache (Redis/Memcached), and a CDN reduces origin load and lowers the chance of process starvation during traffic spikes.
  • Swap and out-of-memory behavior: Enabling swap can prevent immediate OOM kills but may degrade performance. Monitor OOM logs and tune resource allocation.

If you repeatedly encounter memory-related white screens, consider upgrading hosting tier or moving to a host that specializes in WordPress performance. For a practical next step, compare hosting plans using criteria like allowed PHP workers, SSH/WP-CLI access, and support SLAs to match your site’s technical needs.


A Practical Recovery Checklist For Admins

When a site goes white, follow a prioritized checklist to restore service quickly and safely:

  1. Capture the state:
    • Take a server snapshot or backup (files + database).
    • Collect the latest logs (webserver, PHP, debug.log).
  2. Quick sanity checks:
    • Try a static HTML file to confirm webserver health.
    • Check disk space: df -h; low disk can cause failures.
  3. Enable safe debugging:
    • Set WP_DEBUG and WP_DEBUG_LOG, keeping display off.
  4. Isolate plugins/themes:
    • Use WP-CLI: wp plugin deactivate –all; wp theme activate twentytwentyone
  5. Verify PHP limits:
    • Check memory_limit, max_execution_time, and increase temporarily if needed.
  6. Check database:
    • wp db check; mysqlcheck –auto-repair
  7. Validate core files:
    • wp core verify-checksums; replace wp-admin/wp-includes if corrupt.
  8. Restart services:
    • systemctl restart php-fpm; systemctl restart nginx/apache2
  9. Flush caches:
    • Redis/Memcached flush, clear full page cache, purge CDN.
  10. Re-enable components one-by-one:
    • Reactivate plugins sequentially and monitor logs after each activation.
  11. Postmortem:
    • Document root cause, corrective actions, and steps to prevent recurrence (configuration changes, capacity upgrades, monitoring rules).

This checklist prioritizes non-destructive steps first and preserves forensic data. For scripted or repeatable recovery, encode these steps into runbooks or automation scripts so you can recover reliably under pressure.


Frequently Asked Questions About White Screen

Q1: What is the WordPress White Screen?

The WordPress White Screen (WSOD) is when a site returns a blank page instead of content, usually due to PHP fatal errors, memory exhaustion, or corrupted files. It indicates the PHP process failed without returning HTML. Begin diagnostics by checking PHP/webserver logs, enabling WP_DEBUG, and isolating plugins/themes to find the failing layer.

Q2: How do I enable WordPress debugging safely?

Edit wp-config.php and add:
define(‘WP_DEBUG’, true);
define(‘WP_DEBUG_LOG’, true);
define(‘WP_DEBUG_DISPLAY’, false);
This writes errors to wp-content/debug.log while preventing error output to visitors. Remember to disable WP_DEBUG on production after resolving issues to avoid exposing sensitive details.

Q3: Can insufficient PHP memory cause the white screen?

Yes. If PHP hits memory_limit, you’ll often see Allowed memory size exhausted in logs and a blank page in the browser. Temporarily increase memory_limit to 256M or higher in php.ini or wp-config.php and investigate which plugin or process is consuming memory to avoid masking a memory leak.

Q4: Is the database a common cause of WSOD?

Databases can cause WSOD via corrupt tables, broken serialized data, or incorrect siteurl/home values. Use wp db check and built-in repair tools, take a backup first, and fix serialized strings carefully to avoid data corruption from naive search-and-replace operations.

Q5: What server logs are most useful for diagnosing the white screen?

Check PHP error logs, Nginx/Apache error logs, and the WordPress wp-content/debug.log. Look for fatal errors, memory messages, and stack traces referencing plugin or theme files. Correlate timestamps with spike metrics from infrastructure monitoring to identify resource-related causes.

Q6: Should I disable all plugins to recover?

Disabling all plugins is a fast way to recover service and isolate the fault. Use WP-CLI (wp plugin deactivate –all) or rename the plugins folder. After recovery, reactivate plugins one at a time and monitor logs to find the problematic plugin.

Q7: How can I prevent future white screens?

Prevent recurrence by implementing monitoring and alerting for PHP-FPM errors, optimizing resource limits, using caching/CDN, following deployment best practices, and maintaining regular backups. Automate configuration via infrastructure as code and perform staged testing before pushing updates to production.


Conclusion

The WordPress White Screen is an alarm — not an unsolvable mystery. With a methodical approach you can identify whether the root cause is a server constraint, a plugin/theme conflict, corrupted core files, or a database issue. Use logs, WP-CLI, and non-destructive isolation steps first. Address common PHP limits like memory_limit and max_execution_time, repair or replace corrupted core files selectively, and run database checks before applying deeper fixes. Harden your server with tuned PHP-FPM, optimized caching, and sensible file permissions, and codify recovery steps into an automated runbook. For ongoing stability, pair these operational practices with monitoring and hosting choices that match your site’s resource profile — consulting resources on server management, deployment best practices, and WordPress hosting will help scale preventive measures. By combining careful diagnostics, surgical repairs, and long-term configuration controls, you can reduce downtime and restore confidence in your WordPress operations.

About Jack Williams

Jack Williams is a WordPress and server management specialist at Moss.sh, where he helps developers automate their WordPress deployments and streamline server administration for crypto platforms and traditional web projects. With a focus on practical DevOps solutions, he writes guides on zero-downtime deployments, security automation, WordPress performance optimization, and cryptocurrency platform reviews for freelancers, agencies, and startups in the blockchain and fintech space.