Awarie

„Wystąpił krytyczny błąd” — co sprawdzić od razu

WordPress przestał pokazywać białą stronę i zaczął mówić wprost, że coś padło. To dobra wiadomość — bo wysłał Ci też maila z dokładnym powodem.

Komunikat o wystąpieniu krytycznego błędu na witrynie WordPress

Wystąpił krytyczny błąd na tej witrynie. Sprawdź skrzynkę odbiorczą swojego administratora, aby uzyskać instrukcje.

Po angielsku: There has been a critical error on this website.

Jeśli widzisz ten komunikat, masz więcej szczęścia niż osoby, którym WordPress wyświetla pustą białą stronę. Od wersji 5.2 WordPress potrafi wyłapać fatalny błąd PHP, zamiast po cichu się poddać. Co ważniejsze — wysyła na adres administratora maila z dokładnym namiarem na winowajcę i tworzy specjalny link do panelu.

Zdecydowana większość ludzi tego maila nie czyta. A on rozwiązuje sprawę w minutę.

1. Sprawdź skrzynkę administratora

Idź do skrzynki na adres podany w Ustawienia → Ogólne → Adres e-mail administratora. Szukaj wiadomości o temacie zbliżonym do „Twoja witryna ma problem techniczny” albo Your site is experiencing a technical issue.

W środku znajdziesz trzy rzeczy warte złota:

  • nazwę wtyczki lub motywu, który spowodował awarię,
  • ścieżkę do pliku i numer linii, w której PHP się wywalił,
  • link do trybu odzyskiwania — jednorazowy adres, który zaloguje Cię do panelu z wyłączoną wadliwą wtyczką.

Kliknij ten link. Wejdziesz do panelu, zobaczysz u góry pasek informujący o trybie odzyskiwania, a problematyczna wtyczka będzie oznaczona. Wyłącz ją, kliknij „Wyjdź z trybu odzyskiwania” i strona wraca.

Nie masz maila? To najczęstsza komplikacja. Powody bywają dwa: adres administratora jest nieaktualny (na przykład stary adres agencji, która robiła stronę) albo Twój serwer w ogóle nie wysyła poczty. Drugi przypadek jest częstszy, niż się wydaje — i wart osobnego sprawdzenia, bo oznacza, że nie działają też formularze kontaktowe i maile z zamówieniami.

2. Zajrzyj do logu

Jeśli mail nie przyszedł, zrób to samo, co robi WordPress — przeczytaj log.

W wp-config.php dopisz:

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 linie wskażą plik i numer linii. Zwykle wygląda to tak:

PHP Fatal error: Uncaught Error: Call to undefined method
in /wp-content/plugins/nazwa-wtyczki/includes/klasa.php on line 88

Nazwa katalogu po plugins/ to nazwa wtyczki. Masz sprawcę.

WP_DEBUG_DISPLAY ustawiony na false jest tu ważny — dzięki temu błędy lądują w pliku, a nie na ekranie odwiedzających. Po naprawie przywróć WP_DEBUG na false.

3. Wyłącz wtyczkę bez dostępu do panelu

Jeśli nie masz ani maila, ani możliwości logowania, wchodzisz przez FTP albo menedżer plików w panelu hostingu.

Przejdź do wp-content/plugins i zmień nazwę katalogu wadliwej wtyczki — na przykład z problematyczna-wtyczka na problematyczna-wtyczka-off. WordPress jej nie znajdzie i automatycznie dezaktywuje.

Nie wiesz której? Zmień nazwę całego katalogu plugins na plugins-off. Wyłączą się wszystkie naraz. Jeśli strona wróci, przywróć nazwę i wyłączaj pojedynczo, aż trafisz.

Ten sam manewr z motywem: zmień nazwę jego katalogu w wp-content/themes, a WordPress przełączy się na domyślny.

Dlaczego to się stało

Warto wiedzieć, bo od przyczyny zależy, czy problem wróci.

Aktualizacja wtyczki. Nowa wersja wymaga nowszego PHP albo innej wtyczki, której nie masz. Najczęstszy scenariusz — jak wrócić do działającej wersji.

Aktualizacja PHP na hostingu. Twój dostawca podniósł wersję z 7.4 na 8.x, a stara wtyczka używa składni, która zniknęła z języka. Strona działała lata i padła bez żadnej Twojej akcji.

Konflikt dwóch wtyczek. Każda działa osobno, razem nie. Zwykle chodzi o dwie wtyczki robiące to samo — dwa cache, dwie do SEO, dwa systemy formularzy. Metoda znajdowania winnej pary.

Edycja pliku w edytorze WordPressa. Brakujący średnik albo nawias w functions.php. WordPress od kilku wersji sprawdza składnię przed zapisem, ale nie wyłapie wszystkiego.

Jak sprawić, żeby nie wracało

Ta awaria jest w dużej mierze do wyeliminowania i nie wymaga to wiedzy programistycznej.

Aktualizuj na kopii, nie na produkcji. Jeśli wtyczka ma wysypać stronę, niech wysypie tę testową. To jedyna zmiana nawyku, która eliminuje większość takich sytuacji — i dlatego tak właśnie prowadzimy aktualizacje u klientów. Całą bezpieczną procedurę spisaliśmy w poradniku aktualizacji krok po kroku.

Sprawdź, kto jest administratorem. Jeśli adres e-mail w ustawieniach należy do kogoś, z kim nie pracujesz od trzech lat, cały mechanizm ratunkowy WordPressa jest bezużyteczny. To zmiana na trzydzieści sekund.

Ogranicz liczbę wtyczek. Nie chodzi o samą liczbę, tylko o to, że każda dodatkowa to kolejny autor, kolejny cykl aktualizacji i kolejna szansa na konflikt. Pisaliśmy o tym w zestawieniu wtyczek, które faktycznie warto mieć.

Trzymaj PHP w miarę aktualne. Zostawanie na starej wersji odsuwa problem, ale go nie usuwa — a przy okazji spowalnia stronę i zamyka drogę do poprawek bezpieczeństwa.

Ile to trwa

Jeśli mail od WordPressa przyszedł i link do trybu odzyskiwania działa — kilka minut. Jeśli trzeba czytać log i wchodzić przez FTP — zwykle do godziny.

Wezwij pomoc, gdy w logu widzisz coś, co nie przypomina zwykłego błędu wtyczki: nieznane nazwy plików, funkcje eval, długie ciągi base64. To bywa objaw włamania, a wtedy przywrócenie strony do działania jest dopiero początkiem roboty.


Wolisz mieć to z głowy? Zajmiemy się awarią — diagnoza i wycena bezpłatne, odpowiedź w ciągu dwóch godzin. Rozliczenie godzinowe od 120 zł netto, płatność po wykonaniu. Jeśli okaże się, że naprawa nie ma sensu, powiemy to wprost i nie policzymy za nią.

  • krytyczny błąd
  • awaria
  • tryb odzyskiwania
  • wtyczki

Masz taką sytuację u siebie?

Diagnoza i wstępna wycena bezpłatne. Płacisz dopiero po wykonaniu — napisz albo zadzwoń, odpowiadamy do 2 godzin.