# 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.

Source: https://cwp.sg/errors/white-screen-of-death/  
Author: Ben Johnson  
Last verified: 2026-08-04

**Also seen as:** blank white page, WSOD, site shows nothing, empty page no error

## What it 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](/errors/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`:

```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 hosting 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.

---

Content Website Platform (cwp.sg) operates the free hosting it writes about; see https://cwp.sg/about/ for the methodology and the commercial disclosure.
