Error WSOD · php
White screen of death
PHP hit a fatal error and error display is turned off, so the server sent an empty page instead of a message.
Also seen as: blank white page · WSOD · site shows nothing · empty page no error
What it actually means
A completely blank page — no error, no styling, nothing in the source — nearly always means PHP crashed and was told not to say so.
That’s the correct production setting. Error messages leak file paths, database names and sometimes credentials, so public sites should never display them. But it leaves you with no information at all.
The error still happened and it is still recorded. It’s in the error log. Everything below is about getting to it.
Check one thing first: view the page source. Truly empty means PHP died before output. Partial output that stops mid-page means it died during rendering, which usually points at whatever was being rendered at the cut-off point.
Why it happens
A PHP fatal error
A syntax error, a call to a function that doesn’t exist, or a class that failed to load. Most common right after editing a file, updating a plugin, or changing PHP version.
Memory exhausted
The script hit the memory ceiling and was killed. This is allowed memory size exhausted seen with display disabled — the most common single cause of a blank page on WordPress.
A PHP version mismatch
Code written for PHP 7 using syntax removed in PHP 8, or a plugin that hasn’t been updated. Switching PHP version in your control panel and immediately getting a blank site is this.
An incomplete file upload
An FTP transfer that dropped mid-file leaves a truncated PHP file. It parses until the cut and then fails. Re-uploading fixes it, which is why “I re-uploaded and it worked” is a common report.
How to fix it
1. Read the error log — this is the whole job
Everything else is guessing. Open your control panel’s Error Log, or look for an error_log file in the directory where the failure happened.
Match the most recent entry to the time you loaded the page. It names the file and the line. In practice this identifies the cause outright most of the time.
2. Turn on errors for yourself, not for visitors
If the log is empty or unavailable, log to a file instead of the screen.
On WordPress, in wp-config.php:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false); // keep it off the page
@ini_set('display_errors', 0);
Errors then go to wp-content/debug.log. Reload the broken page and read it.
Turn all of this off when you’re done. A readable debug.log on a live site is an information leak.
3. Disable every plugin without the admin panel
If the blank page includes /wp-admin, you can’t disable plugins the normal way. Rename the directory over FTP:
mv wp-content/plugins wp-content/plugins.off
If the site comes back, a plugin is responsible. Rename it back, then rename individual plugin folders one at a time until it breaks again.
4. Switch to a default theme
If disabling plugins didn’t help, the theme is next. Rename the active theme’s folder — WordPress falls back to a bundled default automatically:
mv wp-content/themes/mytheme wp-content/themes/mytheme.off
A blank page that resolves when the theme changes usually means a fatal error in functions.php.
5. Check the PHP version
If it broke immediately after a version change, switch back in your control panel and confirm that fixes it. Then update the plugin or theme that isn’t compatible rather than staying on an unsupported PHP version — old PHP stops getting security fixes.
6. Re-upload the file you last changed
A truncated upload is easy to rule out and easy to miss. Re-upload the last file you touched and reload. Compare file sizes locally and on the server if you’re not sure.
On CWP specifically
CWP writes a per-account error log visible in your control panel, so you never need to enable error display to diagnose a blank page — the fatal error and its line number are already recorded.
We keep display_errors off by default on purpose. A visitor should never see your file paths.
Related errors
-
500
500 Internal Server Error
Something in your application or server configuration crashed, and the server is deliberately withholding the detail from visitors — the real message is in your error log. -
MEM
Allowed memory size exhausted
A PHP script asked for more memory than your account allows, so it was killed part-way through. -
TIME
Maximum execution time exceeded
A PHP script ran longer than allowed and was stopped — almost always waiting on a slow query or a slow external service. -
WP
WordPress login redirect loop
You submit correct credentials, WordPress sends you back to the login page, and nothing tells you why.
Post the exact error and your account name on the community forum — staff and other users answer there, and the thread helps the next person who hits this.