Biały ekran w WordPress - przyczyny i naprawa
Biały ekran to nie awaria bazy danych ani skasowana strona. To PHP, które przerwało pracę i nie miało co wysłać do przeglądarki, przy wyłączonym wyświetlaniu błędów. Treści leżą nietknięte w bazie i wracają w całości, gdy tylko usuniesz przyczynę. Naprawa polega na tym, żeby najpierw zobaczyć błąd, a potem go usunąć. Odwrotna kolejność, czyli wyłączanie wtyczek po kolei na wyczucie, potrafi zająć godziny i niczego nie wyjaśnić.
Czym jest biały ekran śmierci w WordPress?
To sytuacja, w której serwer zwraca pustą stronę zamiast treści albo komunikatu o błędzie. Skrypt PHP został przerwany, a ponieważ WordPress domyślnie nie pokazuje błędów odwiedzającym, w przeglądarce zostaje biel.
Objaw bywa różnie rozłożony i to jest pierwsza wskazówka diagnostyczna.
| Gdzie widać biel | Co to zwykle znaczy |
|---|---|
| Cała witryna, łącznie z panelem | błąd krytyczny w motywie, wtyczce albo brak pamięci |
| Tylko panel administracyjny | wtyczka działająca po zalogowaniu |
| Tylko część podstron | funkcja używana wyłącznie tam, na przykład sklep |
| Czasami, przy większym ruchu | limit pamięci albo procesów na hostingu |
Nowsze wersje WordPressa zamiast bieli pokazują komunikat o krytycznym błędzie i wysyłają wiadomość na adres administratora z linkiem do trybu awaryjnego. Jeśli taki e-mail dostałeś, masz w nim gotową wskazówkę, która wtyczka zawiniła.
Krok 1: zobacz błąd, zanim zaczniesz naprawiać
W pliku `wp-config.php` włącz zapis błędów do pliku, ale nie ich wyświetlanie:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );Odśwież stronę i otwórz `wp-content/debug.log`. Ostatnie wpisy zawierają ścieżkę pliku i numer linii, czyli dokładny adres problemu. Fatal error z nazwą wtyczki kończy diagnostykę w minutę.
Jeśli log jest pusty, zajrzyj do logu serwera w panelu hostingu. Trafiają tam błędy sprzed startu WordPressa, na przykład problem z `.htaccess`, brakujące rozszerzenie PHP albo przekroczony limit pamięci narzucony przez hosting.
Po zakończeniu diagnostyki wyłącz tryb debugowania. Zostawiony na produkcji rośnie bez końca i przy dużym ruchu potrafi zapełnić dysk.
Krok 2: wyłącz wtyczki i motyw przez FTP
Przy białym ekranie zwykle nie da się zalogować do panelu, więc wszystko robi się na plikach.
Zmień nazwę katalogu `wp-content/plugins` na `plugins-off`. WordPress nie znajdzie wtyczek i wyłączy je wszystkie naraz. Jeśli witryna wróci, przyczyna jest wśród nich. Przywróć nazwę katalogu i włączaj wtyczki pojedynczo, sprawdzając stronę po każdej.
Jeśli to nie pomogło, zmień nazwę katalogu aktywnego motywu w `wp-content/themes`. WordPress przełączy się na motyw domyślny. Powrót strony oznacza, że błąd siedzi w szablonie, najczęściej w pliku `functions.php` po wklejeniu tam fragmentu kodu z internetu.
Najczęstszy biały ekran, jaki widujemy, to nie awaria wtyczki, tylko kod wklejony do functions.php dzień wcześniej. Zawsze pytamy o to na początku, bo skraca diagnozę do kilku minut.
Krzysztof Czapnik, KC Mobile
Krok 3: pamięć PHP, wersja PHP i limity hostingu
Jeśli wtyczki i motyw są niewinne, zostają zasoby.
Limit pamięci podnosisz wpisem `define( 'WP_MEMORY_LIMIT', '256M' );` w `wp-config.php`. Gdy to nie działa, ograniczenie jest twardo ustawione po stronie serwera i trzeba je zmienić w panelu hostingu albo poprosić o zmianę obsługę.
Sprawdź też wersję PHP. Przejście na nowszą potrafi wyłożyć motyw albo wtyczkę bez wsparcia, a objawem jest właśnie biel. W panelu hostingu można wrócić do poprzedniej wersji i sprawdzić, czy to była przyczyna.
Według ofert popularnych hostingów pakiety za 20-30 zł miesięcznie mają najniższe limity pamięci i procesów, więc biały ekran pojawiający się falami w godzinach szczytu zwykle wskazuje właśnie na nie, a nie na kod.
| Objaw | Sprawdź | Typowa naprawa |
|---|---|---|
| Allowed memory size exhausted | limit pamięci PHP | podniesienie do 256M |
| Biel po zmianie wersji PHP | dziennik zmian hostingu | powrót do poprzedniej wersji i aktualizacja motywu |
| Biel tylko przy większym ruchu | obciążenie konta | mocniejszy pakiet lub cache |
| Biel po wgraniu kodu do motywu | ostatnia edycja `functions.php` | usunięcie wklejonego fragmentu |
Co zrobić, gdy biel dotyczy tylko panelu?
Sam panel administracyjny na białym ekranie przy działającej witrynie oznacza, że problem wywołuje kod uruchamiany wyłącznie po zalogowaniu. Zakres jest wtedy mniejszy, bo podejrzanych jest kilka, nie kilkadziesiąt.
Zacznij od wtyczek związanych z administracją: kreatorów stron, narzędzi SEO, wtyczek bezpieczeństwa i kopii zapasowych. Wyłącz je przez zmianę nazwy pojedynczego katalogu wtyczki, bez ruszania pozostałych.
Jeśli po wyłączeniu wszystkich wtyczek panel nadal jest biały, sprawdź katalog `wp-admin` pod kątem uszkodzonych plików. Bezpieczne rozwiązanie to wgranie świeżych plików WordPressa z pominięciem katalogu `wp-content`, w którym siedzą Twoje treści i motywy.
Biały ekran a błąd połączenia z bazą danych
Te dwie awarie bywają mylone, bo obie kończą się stroną bez treści, ale mają zupełnie inne przyczyny i inne skutki.
Błąd połączenia z bazą danych zwykle zapowiada się komunikatem, choć przy wyłączonym wyświetlaniu błędów może wyglądać jak zwykła biel. Sprawdź w `wp-config.php`, czy dane dostępowe zgadzają się z tymi z panelu hostingu. Po migracji na inny serwer to pierwsza rzecz, która się rozjeżdża.
Druga typowa przyczyna to przeciążona albo uszkodzona baza. Na współdzielonym hostingu limit jednoczesnych połączeń bywa niski i przy większym ruchu część zapytań po prostu nie przechodzi. Objaw jest wtedy przerywany: strona działa, po odświeżeniu nie działa, po kolejnym znowu działa.
Naprawę tabel uruchamia się wpisem `define( 'WP_ALLOW_REPAIR', true );` w `wp-config.php`, a potem otwarciem adresu `/wp-admin/maint/repair.php`. Po zakończeniu wpis trzeba usunąć, bo dopóki tam jest, każdy może uruchomić naprawę bez logowania.
Jeśli baza jest w porządku, a witryna nadal milczy, wracasz do ścieżki z logami PHP - przyczyna leży w kodzie, nie w danych.
Kolejność diagnostyki w pigułce
Jeśli masz pięć minut i dostęp do FTP, przejdź to po kolei. Każdy krok wyklucza jedną grupę przyczyn, więc do końca listy dociera niewiele przypadków.
1. Sprawdź skrzynkę administratora - WordPress mógł wysłać wiadomość o krytycznym błędzie z nazwą winnej wtyczki
2. Włącz zapis błędów do pliku i odśwież stronę
3. Przeczytaj ostatnie wpisy w `wp-content/debug.log`
4. Jeśli log jest pusty, zajrzyj do logu serwera w panelu hostingu
5. Zmień nazwę katalogu `plugins` i sprawdź stronę
6. Zmień nazwę katalogu aktywnego motywu
7. Podnieś limit pamięci PHP do 256M
8. Sprawdź, czy hosting nie zmienił wersji PHP w ostatnich dniach
Notuj, co zmieniasz. Przy białym ekranie łatwo zrobić pięć zmian naraz i stracić orientację, która z nich pomogła, a która dołożyła nowy problem.
Co zrobić, gdy nic z powyższych nie pomaga?
Zostają dwie drogi i obie wymagają ostrożności.
Wymiana plików rdzenia. Pobierz świeżą paczkę WordPressa w tej samej wersji i wgraj katalogi `wp-admin` oraz `wp-includes`, pomijając `wp-content` i plik `wp-config.php`. To naprawia uszkodzone pliki systemowe bez dotykania Twoich treści, motywów i wtyczek.
Przywrócenie kopii zapasowej. Skuteczne, o ile wiadomo, kiedy zaczął się problem. Kopia sprzed tygodnia cofa też wszystkie zmiany z tego tygodnia, więc przy sklepie oznacza utratę zamówień. Przy witrynie z bazą, która zmienia się codziennie, lepiej przywrócić same pliki i zostawić bazę nietkniętą.
Jeśli biel pojawiła się zaraz po aktualizacji, opisujemy to osobno w poradniku WordPress nie działa po aktualizacji, bo kolejność kroków jest tam inna.
Ile trwa naprawa i ile kosztuje?
Kiedy log wskazuje plik i linię, naprawa jest kwestią minut. Reszta czasu to dojście do logu i wykluczenie kolejnych przyczyn.
Według naszego cennika proste przypadki, czyli konflikt wtyczek albo wyczerpana pamięć, to 200-500 zł i 1-2 godziny pracy. Dane z trudniejszych zgłoszeń, gdzie doszły uszkodzone pliki rdzenia albo problem z bazą, pokazują 500-1000 zł i naprawę tego samego dnia.
Przy okazji naprawy sprawdzamy dwie rzeczy, które i tak trzeba było sprawdzić: czy witryna nie jest zainfekowana i czy ma działającą kopię zapasową. Biały ekran bywa objawem włamania, a nie tylko konfliktu kodu.
Jak zmniejszyć ryzyko powtórki?
- Nie wklejaj kodu do `functions.php` motywu, tylko do wtyczki własnej albo motywu potomnego, bo aktualizacja motywu skasuje zmiany i wróci ten sam błąd
- Aktualizuj wtyczki pojedynczo, z podglądem strony po każdej
- Trzymaj kopię zapasową z ostatniej doby i sprawdź raz, czy odtwarzanie faktycznie działa
- Ustaw adres administratora, na który dojdzie wiadomość o krytycznym błędzie
- Przy witrynie, która zarabia, testuj zmiany na kopii, nie na produkcji
Robimy to w ramach stałej opieki nad stroną WordPress razem z monitoringiem dostępności, który zgłasza awarię, zanim zauważy ją klient. Jeśli patrzysz teraz na biały ekran, napisz przez formularz na stronie kontakt i podaj, co zmieniało się na stronie w ostatniej dobie.
Korzyści
- Diagnoza z logu, nie z wyłączania wtyczek na wyczucie
- Naprawa bez utraty treści - biały ekran nie narusza bazy danych
- Sprawdzenie, czy przyczyną nie jest infekcja albo zmiana wersji PHP przez hosting
- Większość napraw realizujemy tego samego dnia