Błąd krytyczny WordPress: znajdź przyczynę i przywróć stronę
· 6 min czytania
Co oznacza ten błąd
„Na tej stronie wystąpił błąd krytyczny” (po angielsku „There has been a critical error on this website”) to ekran, który WordPress od wersji 5.2 pokazuje zamiast białej strony, gdy PHP zatrzyma się na błędzie krytycznym: wywołanie nieistniejącej funkcji, niezgodna wersja PHP, przekroczony limit pamięci, błąd składni w pliku. Starsze wersje pokazywały w tym miejscu biały ekran albo błąd 500; mechanizm jest ten sam, tylko komunikat nowszy.
Razem z ekranem WordPress wysyła na adres e-mail administratora wiadomość „Twoja witryna ma problem techniczny” z nazwą winnej wtyczki albo motywu i linkiem do trybu odzyskiwania. To najszybsza droga do naprawy, dlatego zaczynamy od skrzynki, nie od serwera.
Częste przyczyny
- Wtyczka po aktualizacji. Nowa wersja wymaga nowszego PHP, innej wtyczki albo rdzenia; przy każdym żądaniu kończy się błędem. Zdecydowanie najczęstsza przyczyna.
- Motyw. Aktualizacja motywu, edycja
functions.phpz literówką, motyw potomny niezgodny z nowym motywem nadrzędnym. - Zmiana wersji PHP. Dostawca hostingu podniósł PHP (stara wtyczka używa usuniętych funkcji) albo obniżył (nowa wtyczka używa składni, której nie ma).
- Limit pamięci.
Allowed memory size of … exhausted: kreator stron, galeria, import, zbyt niskimemory_limit. - Uszkodzona albo niedokończona aktualizacja. Przerwane kopiowanie plików rdzenia, brakujący plik w
wp-includes, wtyczka wgrana w połowie. - Konflikt dwóch wtyczek deklarujących tę samą funkcję albo klasę („Cannot redeclare”).
- Baza danych: jeśli komunikat dotyczy połączenia, to osobny przypadek: błąd połączenia z bazą danych.
Jeśli odwiedzasz cudzą stronę
Nic do zrobienia; ekran mówi o błędzie po stronie właściciela, a nie w Twojej przeglądarce. Odśwież po kilku minutach.
Jeśli to Twoja strona: najpierw sprawdź
Narzędzie Is it down? potwierdzi, że błąd widzą wszyscy (kod 500 albo komunikat przy kodzie 200). Potem trzy źródła informacji, w tej kolejności:
1. E-mail od WordPressa. Wiadomość „Twoja witryna ma problem techniczny” zawiera zdanie w rodzaju „WordPress wykrył błąd w jednej z wtyczek: Nazwa wtyczki” oraz link do trybu odzyskiwania ważny przez jeden dzień. Po kliknięciu logujesz się do kokpitu z wyłączonym winnym składnikiem i możesz go dezaktywować albo zaktualizować.
2. Log błędów. Włącz w wp-config.php na czas naprawy:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
Potem odśwież stronę i czytaj:
tail -n 30 /var/www/przyklad.pl/wp-content/debug.log
sudo tail -n 30 /var/log/php8.3-fpm.log
sudo tail -n 30 /var/log/nginx/error.log
Linia PHP Fatal error: Uncaught Error: Call to undefined function … in /wp-content/plugins/nazwa-wtyczki/… podaje winnego i plik.
3. Co zmieniło się ostatnio. Aktualizacja (automatyczna albo ręczna), nowa wtyczka, zmiana PHP w panelu, edycja motywu. Jeśli nie pamiętasz, wp plugin list --update=available i daty plików w wp-content/plugins podpowiedzą.
Naprawy na własnym serwerze albo hostingu z SSH
1. Wyłącz winną wtyczkę
cd /var/www/przyklad.pl
wp plugin deactivate nazwa-wtyczki
# bez WP-CLI: zmiana nazwy katalogu
mv wp-content/plugins/nazwa-wtyczki wp-content/plugins/nazwa-wtyczki.off
Strona wraca natychmiast. Jeśli e-mail i log nie wskazują wtyczki, wyłącz wszystkie naraz (mv wp-content/plugins wp-content/plugins.off, potem utwórz pusty katalog plugins) i włączaj je po jednej, odświeżając stronę po każdej. Przez SFTP działa to samo: zmiana nazwy katalogu.
2. Przełącz motyw
wp theme activate twentytwentyfour
Bez WP-CLI zmień nazwę katalogu aktywnego motywu w wp-content/themes; WordPress przełączy się na domyślny, jeśli jest zainstalowany. Potem napraw functions.php albo zaktualizuj motyw potomny.
3. Cofnij aktualizację
Jeśli nowa wersja wtyczki jest winna, a potrzebujesz jej od razu, zainstaluj poprzednią:
wp plugin install nazwa-wtyczki --version=3.4.1 --force
Poprzednie wersje znajdziesz w zakładce „Zaawansowane” wtyczki w katalogu WordPressa. Potem zgłoś błąd autorowi i nie aktualizuj, dopóki nie wyda poprawki.
4. Wersja PHP
php -v
wp cli info | grep PHP
Na własnym serwerze wskaż w konfiguracji serwera WWW pulę innej wersji (fastcgi_pass unix:/run/php/php8.2-fpm.sock;), sudo nginx -t && sudo systemctl reload nginx. Na hostingu zmień wersję w panelu („Wersja PHP”, „Select PHP Version”). Docelowo zaktualizuj wtyczki, zamiast zostawać na starym PHP.
5. Limit pamięci
W wp-config.php: define('WP_MEMORY_LIMIT', '256M');. Na własnym serwerze także memory_limit = 256M w puli PHP-FPM albo php.ini, potem sudo php-fpm8.3 -t && sudo systemctl reload php8.3-fpm. Jeśli pojedyncze żądanie potrzebuje więcej, winna jest wtyczka, nie limit.
6. Uszkodzona aktualizacja rdzenia
wp core verify-checksums
wp core download --force --skip-content
Pierwsze polecenie wskaże zmienione albo brakujące pliki, drugie nadpisze rdzeń czystą kopią tej samej wersji bez ruszania wp-content. Usuń też zawieszony plik .maintenance, jeśli został po przerwanej aktualizacji.
Gdy to problem dostawcy hostingu
Na hostingu bez SSH zostają SFTP (zmiana nazwy katalogu wtyczki działa tak samo) i panel (wersja PHP, limit pamięci). Jeśli błąd pojawił się bez żadnej zmiany po Twojej stronie, wyślij:
Dzień dobry, moja strona przyklad.pl pokazuje „Na tej stronie wystąpił błąd krytyczny” od około 06:40 UTC. Nie instalowano aktualizacji ani zmian w plikach. Czy w tym czasie zmieniła się wersja PHP, rozszerzenia PHP albo limit pamięci mojego konta? Proszę też o fragment logu błędów PHP z tego okresu.
Jak zapobiec następnemu
Błąd krytyczny przychodzi niemal zawsze z aktualizacją, więc aktualizuj z kopią zapasową i sprawdzeniem po zmianie, a wtyczki, które nie były aktualizowane od lat, wymieniaj, zanim przestaną być zgodne. Sprawdzanie słowa kluczowego w monitoringu stron wyłapuje ekran błędu nawet wtedy, gdy serwer odpowiada kodem 200, a alerty bezpieczeństwa mówią, które wtyczki trzeba zaktualizować i kiedy. Awaria? Naprawiamy: Quick Fix poprawia drobne błędy konfiguracji i zwalnia pamięć w stałej cenie; wyłączenie wtyczki, cofnięcie aktualizacji, zmianę PHP i naprawę rdzenia wykonuje Deep Fix, z kopią zapasową przed i sprawdzeniem po, przez całą dobę, na własnym serwerze albo hostingu z SSH. Zobacz naprawa WordPressa na żądanie i naprawa serwera.
Co teraz
Sprawdź z zewnątrz
Strona nie działa u wszystkich czy tylko u Ciebie i co odpowiada serwer? Za darmo, bez rejestracji.
Is it down? Sprawdź, czy strona działaAwaria? Naprawiamy.
Na Twoim własnym serwerze albo na hostingu z dostępem SSH: Quick Fix w stałej cenie na częste przyczyny, Deep Fix rozliczany w blokach po 15 minut na resztę, przez całą dobę. Cena przed zamówieniem.
Zamów naprawęWięcej poradników
- Strona nie działa: co zrobić w pierwszych 15 minutach
- Awaria serwera: co sprawdzić i w jakiej kolejności
- Błąd 500 Internal Server Error: znajdź przyczynę w logach i przywróć stronę
- Błąd 502 Bad Gateway: znajdź przyczynę i napraw
- Błąd 503: przeciążenie, konserwacja czy limit hostingu?
- Błąd 504 Gateway Timeout: znajdź, co spowalnia stronę
- Błąd 521 i 522 w Cloudflare: serwer źródłowy nie odpowiada
- DNS_PROBE_FINISHED_NXDOMAIN: domena przestała odpowiadać
- ERR_CONNECTION_REFUSED: serwer odrzuca połączenie
- ERR_CONNECTION_TIMED_OUT: serwer nie odpowiada na czas
- Co oznacza „Połączenie nie jest prywatne” i jak to naprawić
- ERR_SSL_PROTOCOL_ERROR: bezpieczne połączenie zawodzi przed certyfikatem
- ERR_TOO_MANY_REDIRECTS: znajdź pętlę przekierowań i ją przerwij
- Błąd 403 Forbidden: co blokuje dostęp do Twojej strony
- ERR_NAME_NOT_RESOLVED: nie można znaleźć nazwy strony
- „Błąd podczas nawiązywania połączenia z bazą danych” w WordPressie: przyczyna i naprawa
- ERR_CONNECTION_RESET: dlaczego połączenie zrywa się w połowie
- Błąd 429 Too Many Requests: który limit blokuje odwiedzających
- ERR_EMPTY_RESPONSE: serwer nie wysłał żadnych danych