Biały ekran i krytyczny błąd WordPressa — plan bezpiecznej naprawy
Biały ekran, komunikat „Wystąpił krytyczny błąd” i odpowiedź 500 mogą być różnymi objawami tego samego błędu PHP. Nie wskazują jednak automatycznie wadliwej wtyczki. Przyczyną może być motyw, własny kod, niezgodna wersja PHP, brak pamięci, uszkodzona aktualizacja albo problem infrastruktury.
Krótka odpowiedź: nie odświeżaj strony bez końca i nie aktualizuj kolejnych elementów. Zapisz zakres awarii i ostatnią zmianę, sprawdź skrzynkę administratora pod kątem wiadomości trybu odzyskiwania, wykonaj kopię obecnego stanu i przejrzyj log z chwili błędu. Jeśli log wskazuje jeden komponent, wyłącz go kontrolowanie lub wróć do zgodnej wersji. Gdy panel nie działa, użyj SFTP/panelu plików dopiero po zabezpieczeniu danych. Po przywróceniu strony usuń pierwotną przyczynę, przetestuj funkcje i nie traktuj samego zniknięcia komunikatu jako pełnej naprawy.
Najpierw sprawdź zakres awarii
Otwórz bez wielokrotnego odświeżania:
- stronę główną;
- jedną podstronę;
/wp-admin/;- stronę logowania;
- dokładne działanie, po którym pojawia się błąd;
- odpowiedź z innej przeglądarki bez aktywnej sesji.
Zapisz status HTTP i godzinę. Jeżeli nie działa tylko panel, przyczyna może dotyczyć kodu uruchamianego administracyjnie. Jeśli błąd występuje przy zapisie formularza albo zadaniu cron, zwykłe otwarcie strony głównej może go nie odtworzyć.
Sprawdź też panel hostingu: stan PHP, limit miejsca, komunikaty o awarii i ostatnie kopie. Biały ekran nie zawsze pochodzi z WordPressa.
Ustal ostatnią zmianę, ale jej nie obwiniaj bez dowodu
Najważniejsze pytania:
- czy właśnie aktualizowano WordPressa, motyw lub wtyczkę;
- czy zmieniono wersję PHP;
- czy edytowano
functions.php,wp-config.phpalbo.htaccess; - czy instalowano nowe rozszerzenie;
- czy hosting przywracał kopię lub migrował serwis;
- czy wyczerpało się miejsce albo limit plików;
- czy błąd pojawia się stale czy przy konkretnych danych.
Zbieżność czasowa tworzy hipotezę. Log powinien ją potwierdzić.
Tryb odzyskiwania WordPressa
WordPress ma wbudowany Recovery Mode, który w niektórych przypadkach fatalnego błędu PHP wysyła wiadomość na administracyjny adres e-mail. Specjalny link pozwala zalogować się do sesji, w której wadliwy motyw lub wtyczka jest wstrzymana dla administratora, aby można było przeprowadzić diagnozę.
Postępuj tak:
- sprawdź skrzynkę administratora i spam;
- zweryfikuj domenę linku przed otwarciem;
- zaloguj się przez specjalny adres;
- przeczytaj informację o komponencie i błędzie;
- wyłącz wskazany element lub popraw własny kod;
- przetestuj stronę przed wyjściem z trybu;
- po naprawie wybierz zakończenie Recovery Mode.
Wiadomość nie zawsze przyjdzie. Tryb nie obejmuje każdego błędu, a poczta witryny mogła przestać działać. Brak e-maila nie wyklucza fatalnego błędu PHP.
Zabezpiecz stan przed zmianami
Jeżeli hosting tworzy kopie, nie zakładaj, że ostatnia jest kompletna i możliwa do odtworzenia. Pobierz lub oznacz kopię plików i bazy. Zachowaj także logi, wersje komponentów i czas awarii.
Przy stronie z zamówieniami nie cofaj całej bazy do wczoraj tylko dlatego, że dostępna jest kopia. Utraciłbyś nowe dane. Często bezpieczniej przywrócić poprzednią wersję jednego pliku lub komponentu po diagnozie.
Zdobądź konkretny komunikat błędu
Sprawdź kolejno:
- wiadomość Recovery Mode;
- error log PHP/serwera w panelu;
- log aplikacji, jeśli był już bezpiecznie skonfigurowany;
- tymczasowy
WP_DEBUG_LOGz wyłączonym wyświetlaniem błędów; - dziennik wdrożenia albo aktualizacji.
Nie pokazuj display_errors publicznie. Szczegóły mogą ujawnić ścieżki serwera i fragmenty działania aplikacji. Bezpieczną konfigurację opisuje poradnik WP_DEBUG — jak włączyć logowanie błędów.
W logu szukaj pierwszego fatalnego błędu w czasie testu, pliku, linii oraz stosu wywołań. Allowed memory size exhausted nie oznacza automatycznie, że wystarczy podnieść limit; komponent może zużywać pamięć w pętli.
Gdy log wskazuje jedną wtyczkę
Jeśli panel działa w trybie odzyskiwania, wyłącz wskazaną wtyczkę tam. Następnie sprawdź, czy jej funkcja jest krytyczna: wyłączenie formularza, płatności, wielojęzyczności lub zabezpieczenia może przywrócić HTML, ale zepsuć proces biznesowy.
Gdy panel nie działa, oficjalna dokumentacja WordPressa opisuje awaryjne wyłączenie przez zmianę nazwy katalogu konkretnej wtyczki, np.:
wp-content/plugins/nazwa-wtyczki
wp-content/plugins/nazwa-wtyczki.wylaczona
Warunki bezpieczeństwa:
- działasz na komponencie wskazanym przez log lub ostatnią zmianę;
- masz kopię i dostęp do cofnięcia;
- zapisujesz poprzednią nazwę;
- nie usuwasz katalogu;
- po zmianie testujesz stronę, panel i funkcję wtyczki;
- później instalujesz zgodną, czystą wersję albo wdrażasz poprawkę.
Nie pozostawiaj przypadkowej nazwy jako trwałej „naprawy”.
Gdy nie wiadomo, która wtyczka zawiniła
Zmiana nazwy całego wp-content/plugins może awaryjnie dezaktywować wtyczki i umożliwić logowanie, ale ma duży wpływ. Rób to tylko w kontrolowanym oknie, z kopią i świadomością skutków. Po przywróceniu nazwy wtyczki mogą wymagać ręcznej aktywacji.
Bezpieczniejsza kolejność na stagingu:
- odtwórz błąd;
- zachowaj log;
- wyłącz połowę niekrytycznych wtyczek;
- sprawdź identyczny scenariusz;
- zawężaj zbiór;
- testuj wykrytą wtyczkę z motywem bazowym;
- sprawdź kompatybilność wersji.
Na produkcji nie wyłączaj całego zestawu w godzinach sprzedaży tylko po to, aby szukać metodą prób.
Gdy log wskazuje motyw lub własny kod
Jeśli błąd powstał po edycji własnego kodu, przywróć ostatnią działającą wersję z repozytorium lub kopii. Nie poprawiaj składni na produkcji bez kontroli wersji.
Przełączenie motywu może zmienić układ, widgety i funkcje, dlatego najpierw sprawdź rozwiązanie na stagingu. Motyw potomny i nadrzędny mogą być zależne; log pokaże miejsce ujawnienia błędu, ale przyczyną może być brak funkcji z drugiego komponentu.
Gdy problem zaczął się po zmianie PHP
Nie każda wtyczka obsługuje każdą wersję PHP. Porównaj wymagania WordPressa i komponentów, log deprecacji/fatal error oraz wersję działającą przed zmianą.
Jeżeli musisz wykonać rollback PHP, potraktuj go jako krótkie przywrócenie usługi, nie rozwiązanie na zawsze. Stara, niewspierana wersja może nie otrzymywać poprawek bezpieczeństwa. Zaplanuj aktualizację lub wymianę niezgodnego kodu.
Czego nie robić
- Nie przywracaj losowej starej kopii bez oceny utraty danych.
- Nie podmieniaj całego WordPressa plikami z nieznanego archiwum.
- Nie usuwaj katalogów wtyczek przed zachowaniem dowodów.
- Nie zwiększaj bez końca
memory_limiti czasu wykonania. - Nie włączaj publicznego wyświetlania błędów.
- Nie wykonuj jednocześnie aktualizacji rdzenia, motywu, PHP i wszystkich wtyczek.
- Nie uznawaj strony za naprawioną tylko dlatego, że działa jej ekran główny.
Test po przywróceniu strony
Sprawdź co najmniej:
- stronę główną i kilka szablonów podstron;
- logowanie oraz edycję;
- formularze i dostarczenie wiadomości;
- menu mobilne;
- zadania zaplanowane;
- integracje, rezerwacje lub płatności;
- logi po wykonaniu testów;
- monitoring i kopię po naprawie.
Zapisz przyczynę pierwotną, wersje, działanie awaryjne, rozwiązanie docelowe i sposób zapobiegania. Jeśli winna była niezgodna aktualizacja, potrzebujesz stagingu i procedury wdrożeń — nie trwałego zakazu aktualizowania.
Przywrócenie usługi to dopiero połowa pracy
Awaryjne wyłączenie komponentu może szybko przywrócić stronę, lecz jednocześnie wyłączyć ważną funkcję. Pełna naprawa usuwa lub zastępuje wadliwy kod, potwierdza zgodność, testuje procesy biznesowe i pozostawia aktualną kopię oraz dokumentację.
Najkrótsza bezpieczna droga prowadzi przez dowód: zakres awarii, log, jedna odwracalna zmiana i powtórzenie tego samego testu.