Biały ekran WordPress – przyczyny i naprawa krok po kroku
- Typowe objawy
- Pusta biała strona bez żadnego komunikatu, na całej stronie, w panelu lub na jednej podstronie
- Najczęstsza przyczyna
- Błąd PHP bez wyświetlania, brak pamięci, pusta strona w cache, motyw
- Czas naprawy
- Od kilku minut (cache) do kilku godzin (błąd w kodzie)
- Czy zrobisz to sam?
- Tak, jeśli masz dostęp do FTP lub menedżera plików i panelu hostingu
Szybka odpowiedź
Biały ekran WordPress to zwykle błąd krytyczny PHP, którego WordPress nie zdążył lub nie mógł pokazać, albo pusta strona zapisana w cache. Sprawdź najpierw, czy serwer zwraca kod 500 (błąd PHP), czy 200 z pustą treścią (cache lub motyw). Przy kodzie 500 włącz WP_DEBUG_LOG w wp-config.php i z pliku wp-content/debug.log odczytaj winną wtyczkę lub motyw. Przy kodzie 200 wyczyść cache i sprawdź stronę z wyłączonym motywem.
Biały ekran (po angielsku „white screen of death”, w skrócie WSOD) przez lata był najczęstszym objawem awarii WordPressa. Od wersji 5.2 WordPress w większości sytuacji pokazuje zamiast niego komunikat „Na tej stronie wystąpił błąd krytyczny”. Pusta strona nie zniknęła jednak całkiem. Pojawia się wtedy, gdy mechanizm przechwytywania błędów nie zadziała, oraz w sytuacjach, które w ogóle nie są błędem PHP.
Jeśli widzisz komunikat o błędzie krytycznym, przejdź od razu do artykułu Na tej stronie wystąpił błąd krytyczny. Tutaj zajmuję się sytuacją, w której nie widać nic.
Dlaczego dziś zamiast komunikatu widzisz pustą stronę
Komunikat o błędzie krytycznym wyświetla specjalny mechanizm WordPressa, uruchamiany w chwili, gdy PHP kończy pracę z błędem. Działa tylko pod kilkoma warunkami. Gdy któryś nie jest spełniony, zostaje biała strona:
- Błąd wystąpił, zanim WordPress uruchomił obsługę błędów. Na przykład błąd składni w
wp-config.php, który WordPress wczytuje, zanim włączy przechwytywanie błędów. PHP przerywa pracę, a o tym, co zobaczysz, decyduje ustawieniedisplay_errorsserwera. Na produkcyjnych hostingach jest ono wyłączone, więc strona jest pusta. - Strona zaczęła się już wyświetlać. Jeśli błąd pojawi się w połowie generowania strony, na przykład w stopce motywu, WordPress nie może już podmienić odpowiedzi na komunikat. Widzisz wtedy pustą stronę albo jej górną połowę, urwaną w przypadkowym miejscu.
- Obsługa błędów jest wyłączona. Stała
WP_DISABLE_FATAL_ERROR_HANDLERustawiona natruewwp-config.php(albo odpowiedni filtr we wtyczce) wyłącza ten mechanizm całkowicie. - Brakuje pamięci. Gdy skrypt wyczerpie limit pamięci, czasem nie starcza jej nawet na wygenerowanie komunikatu, a hosting może dodatkowo przerwać proces PHP.
- WordPress jest bardzo stary. Wersje sprzed 5.2 w ogóle nie mają tego mechanizmu.
Są też białe ekrany, które nie są błędem PHP: pusta odpowiedź zapisana w cache, błąd JavaScriptu w edytorze bloków, motyw, który nie generuje żadnej treści, albo strona z kodem 200 i pustym szablonem. Ich nie znajdziesz w logu PHP, dlatego najpierw warto ustalić, z którym rodzajem masz do czynienia.
Gdzie widzisz biały ekran i co to oznacza
Miejsce, w którym pojawia się pusta strona, bardzo zawęża listę przyczyn. Zanim zaczniesz cokolwiek zmieniać, sprawdź stronę główną, kilka podstron, stronę logowania /wp-login.php i panel /wp-admin/, najlepiej w oknie prywatnym przeglądarki.
Pierwszy test: jaki kod zwraca serwer
Biała strona w przeglądarce wygląda zawsze tak samo, ale serwer może zwracać różne odpowiedzi. Kod odpowiedzi HTTP to najszybszy sposób, żeby odróżnić błąd PHP od problemu z cache lub motywem.
-
Otwórz narzędzia deweloperskie przeglądarki
W Chrome, Edge lub Firefoksie naciśnij
F12, przejdź na kartę Sieć (Network) i odśwież stronę. Pierwszy wiersz na liście to sam dokument strony. W kolumnie Stan (Status) zobaczysz kod odpowiedzi. -
Albo sprawdź to jednym poleceniem
W terminalu (na Windows w PowerShellu wpisz
curl.exezamiastcurl, a drugie polecenie zwc -czadziała tylko na macOS i Linuksie):# sam nagłówek odpowiedzi, z kodem HTTP curl -sI https://twojadomena.pl/ # ile bajtów treści zwraca strona curl -s https://twojadomena.pl/ | wc -c
Jeśli przeglądarka zamiast białej strony pokazuje własny komunikat, że strona nie działa, z dopiskiem o błędzie HTTP 500, to ten sam przypadek co pierwsza kolumna. Przeglądarka po prostu zastąpiła pustą odpowiedź swoim szablonem.
Naprawa krok po kroku
Poniższa kolejność zaczyna się od kroków, które nic nie psują, a kończy na tych, które zmieniają wygląd lub działanie strony. Przed zmianą każdego pliku pobierz jego kopię.
-
Sprawdź w oknie prywatnym i obejdź cache
Otwórz stronę w oknie prywatnym i dopisz do adresu losowy parametr, na przykład
?test=12345. Większość wtyczek cache i cache serwerowych nie zapisuje stron z nieznanymi parametrami, więc dostaniesz świeżo wygenerowaną wersję. Jeśli z parametrem strona działa, a bez niego jest pusta, winny jest cache. -
Wyczyść cache we właściwym miejscu
Cache może być w kilku warstwach naraz: we wtyczce WordPressa, na serwerze hostingu, w usłudze CDN przed stroną. Gdy panel działa, użyj przycisku czyszczenia we wtyczce. Gdy nie działa, usuń zawartość katalogu
wp-content/cache/(sam katalog zostaw) i wyczyść cache w panelu hostingu lub CDN. Poleceniewp cache flushw WP-CLI czyści tylko pamięć obiektów, a nie zapisane strony. -
Włącz zapis błędów do logu
W pliku
wp-config.phpzamień linię zWP_DEBUGna poniższy blok, powyżej komentarza „stop editing”:define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); define( 'WP_DEBUG_DISPLAY', false ); @ini_set( 'display_errors', 0 );Odśwież pustą stronę i otwórz
wp-content/debug.log. Szukaj na końcu pliku linii zPHP Fatal errorlubPHP Parse error. Jak czytać taką linię, pokazuję na grafice w artykule o błędzie krytycznym. -
Gdy debug.log nie powstaje, zajrzyj do logu hostingu
Błąd w samym
wp-config.phppojawia się, zanim WordPress przekieruje błędy do własnego pliku. Wtedy szukaj plikuerror_logw katalogu strony albo logów błędów w panelu hostingu. Jeśli edytowałeś przed chwiląwp-config.php, wgraj jego kopię: brakujący średnik albo cudzysłów to najczęstsza przyczyna białego ekranu wszędzie, łącznie z panelem. -
Wyłącz wtyczkę wskazaną w logu
Zmień nazwę jej katalogu w
wp-content/plugins/, na przykład dopisując.off. Bez wskazówki w logu zmień nazwę całego kataloguplugins, a gdy strona wróci, przywróć ją i wyłączaj wtyczki pojedynczo. Z WP-CLI:wp plugin deactivate nazwa-wtyczki --skip-plugins --skip-themes. -
Przetestuj inny motyw
Jeśli log wskazuje
wp-content/themes/albo strona zwraca kod 200 z pustą treścią mimo wyczyszczonego cache, przełącz motyw na domyślny:wp theme activate twentytwentyfive --skip-plugins --skip-themes(nazwę zainstalowanego motywu domyślnego sprawdzisz przezwp theme list). Bez WP-CLI zmień nazwę katalogu aktywnego motywu, a potem wejdź do Wygląd, Motywy. WordPress przełączy się na motyw domyślny, jeśli taki jest zainstalowany. -
Zwiększ limit pamięci, jeśli log o nim mówi
Przy komunikacie
Allowed memory size of … bytes exhausteddodaj wwp-config.phpliniędefine( 'WP_MEMORY_LIMIT', '256M' );. Jeśli hosting ma niższy, sztywny limit, zmieńmemory_limitw ustawieniach PHP w panelu hostingu. -
Wyłącz debugowanie po naprawie
Przywróć
define( 'WP_DEBUG', false );, usuń pozostałe dodane linie i skasuj plikdebug.logz serwera. Jeśli wwp-config.phpznalazłeśWP_DISABLE_FATAL_ERROR_HANDLER, a nie wiesz, po co ktoś ją dodał, usuń ją. Przy następnej awarii zobaczysz komunikat i dostaniesz mail z linkiem do trybu odzyskiwania.
Biały ekran tylko w panelu lub tylko w edytorze
Gdy strona dla gości działa, a pusty jest tylko /wp-admin/, przyczyną jest najczęściej wtyczka uruchamiająca swój kod wyłącznie w panelu: kreator stron, wtyczka do SEO, moduł statystyk. Możliwe też, że goście widzą starą stronę z cache, a błąd w rzeczywistości dotyczy wszystkich. Postępowanie jest takie samo jak wyżej: log PHP, a potem wyłączenie winnej wtyczki.
Inaczej jest, gdy panel działa, a pusty jest tylko edytor wpisów lub stron. Edytor bloków jest aplikacją w JavaScripcie, więc jego błędy nie trafiają do logu PHP. Naciśnij F12, przejdź na kartę Konsola i odśwież edytor. Czerwone komunikaty zwykle zawierają ścieżkę do pliku z katalogu wp-content/plugins/, która wskazuje winną wtyczkę. Pomaga też wyczyszczenie cache przeglądarki i wyłączenie wtyczek łączących lub minimalizujących pliki JavaScript, bo potrafią serwować stare wersje skryptów edytora po aktualizacji WordPressa.

F12, karta Konsola) pokazuje błąd Uncaught TypeError z pliku editor.min.js?ver=2.1.0. Po najechaniu kursorem na nazwę pliku zobaczysz pełny adres z katalogu wp-content/plugins/galeria-pro/, czyli winną wtyczkę. Zrzut z testowej instalacji WordPress 7.1 z celowo zepsutą wtyczką.Biały ekran tylko na jednej podstronie
Jeśli pusta jest tylko jedna podstrona, błąd siedzi w czymś, co występuje tylko na niej. Typowe przykłady:
- Koszyk lub zamówienie w sklepie. Wtyczka bramki płatności albo dostawy, często po aktualizacji WooCommerce. Gdy motyw ma własne kopie szablonów WooCommerce, nieaktualny szablon też potrafi to spowodować.
- Strona z formularzem. Wtyczka formularzy lub zabezpieczenia przed spamem.
- Strona z własnym szablonem. Plik szablonu motywu, który ładuje się tylko dla tej podstrony.
- Strona z krótkim kodem (shortcode) lub blokiem. Wtyczka, która dostarcza ten element.
Włącz log, wejdź na tę jedną podstronę i od razu sprawdź koniec debug.log. Jeśli w logu nic nie ma, a strona zwraca kod 200, wyczyść cache tej podstrony i otwórz jej źródło (Ctrl+U). Pusty dokument oznacza cache lub szablon, a urwany w połowie kod HTML oznacza błąd PHP w miejscu, w którym kod się kończy.
Właścicielka strony usługowej po aktualizacji wtyczek widzi w panelu wszystko w porządku, ale klienci piszą, że strona główna jest pusta. Kod odpowiedzi to 200, a treść ma kilkadziesiąt bajtów. Z parametrem ?test=1 strona działa. Wtyczka cache zapisała pustą stronę w chwili, gdy aktualizacja jeszcze trwała, i od tamtej pory serwuje ją wszystkim gościom. Wyczyszczenie cache rozwiązuje problem w minutę. Żeby się to nie powtarzało, cache czyszczony jest automatycznie po każdej aktualizacji.
Jeśli pusta strona pojawiła się zaraz po aktualizacji, najszybszą drogą bywa cofnięcie tej jednej zmiany. Opisuję to w artykułach Strona nie działa po aktualizacji i Strona nie działa po zmianie PHP.
Kiedy nie robić tego samemu
Biały ekran zwykle da się naprawić w kilkanaście minut, jeśli log wskazuje przyczynę. Zleć to komuś, gdy:
- log jest pusty, a strona zwraca kod 500, co często oznacza problem z konfiguracją serwera, a nie z WordPressem,
- nie masz dostępu do FTP ani panelu hostingu,
- w logu widzisz pliki o losowych nazwach albo kod w miejscach, których nie zmieniałeś (to może być włamanie, zobacz jak sprawdzić, czy strona została zhakowana),
- pusta jest strona zamówienia w sklepie, a każda godzina to utracona sprzedaż.
Nadal widzisz białą stronę?
Sprawdzę logi serwera i przywrócę stronę. Naprawa jednej awarii w ramach Szybkiej Interwencji kosztuje 299 zł netto z 7-dniową gwarancją. Zgłoszenia awaryjne przyjmuję całą dobę.
Najczęstsze pytania
Dlaczego widzę biały ekran, skoro nowy WordPress pokazuje komunikat o błędzie krytycznym?
Komunikat pojawia się tylko wtedy, gdy WordPress zdąży przechwycić błąd i nie wysłał jeszcze żadnej treści strony. Błąd w pliku wp-config.php, wyłączona obsługa błędów, błąd w połowie generowania strony, pusta strona zapisana w cache albo błąd JavaScriptu w edytorze kończą się białym ekranem bez komunikatu.
Czy biały ekran to wirus?
Zwykle nie. Najczęściej to błąd PHP po aktualizacji lub zmianie wersji PHP, brak pamięci albo problem z cache. Włamanie bywa przyczyną, gdy złośliwy kod dopisany do plików zawiera błąd. Jeśli w logu widzisz pliki o dziwnych nazwach albo zmiany w plikach, których nie dotykałeś, sprawdź stronę pod kątem infekcji.
Biały ekran widzę tylko ja, a inni widzą stronę. Co to znaczy?
Najczęściej Ty jesteś zalogowany, a goście dostają stronę z cache. Błąd dotyczy wtedy kodu uruchamianego dla zalogowanych, na przykład paska administracyjnego lub wtyczki działającej tylko w panelu. Możliwe też, że Twoja przeglądarka ma w pamięci starą, pustą wersję strony. Sprawdź w oknie prywatnym.
Czy wyczyszczenie cache może pogorszyć sytuację?
Może ujawnić problem, który już istnieje. Jeśli kod PHP jest zepsuty, a goście widzą jeszcze stare strony z cache, po wyczyszczeniu zobaczą biały ekran. Dlatego najpierw sprawdź stronę w oknie prywatnym z parametrem omijającym cache i zajrzyj do logu, a cache czyść dopiero po naprawie albo gdy wiesz, że to on serwuje pustą stronę.