Państwa strona wyświetla pusty ekran albo zdanie „W witrynie wystąpił błąd krytyczny.” W obu przypadkach PHP zapisał gdzieś dokładny komunikat, który wskazuje winny plik. Ten poradnik pokazuje, gdzie go przeczytać, jak go zinterpretować i jaki krok odpowiada każdemu komunikatowi.
wp-config.php i ponownie załadować stronę z błędem.PHP Fatal error w wp-content/debug.log: ścieżka pliku wskazuje winną wtyczkę lub motyw.debug.log.Biały ekran to najczęściej błąd krytyczny PHP (fatal error): plik strony zażądał czegoś niemożliwego i wykonanie zatrzymało się, zanim cokolwiek zostało wyświetlone. Od wersji 5.2 WordPress przechwytuje te błędy: zamiast pustej strony wyświetla „W witrynie wystąpił błąd krytyczny.” i wysyła e-mail na administracyjny adres e-mail strony.
Strona pozostaje całkiem biała w kilku przypadkach: starsza wersja WordPressa, błąd, który wystąpił przed załadowaniem tego mechanizmu, stała WP_DISABLE_FATAL_ERROR_HANDLER ustawiona na true albo wtyczka pamięci podręcznej, która serwuje pustą stronę zapisaną w czasie awarii. Poniższa metoda działa we wszystkich tych przypadkach.
Trzy kroki mogą poczekać, aż błąd zostanie odczytany: ponowna instalacja WordPressa, usuwanie wtyczek, przywracanie starej kopii zapasowej. Każdy z nich może usunąć ustawienia lub świeże dane, a komunikat o błędzie zwykle wskazuje, który składnik wyłączyć, bez żadnej straty.
Gdy WordPress przechwyci błąd, wysyła na administracyjny adres e-mail strony wiadomość z tematem „[Nazwa witryny] Twoja witryna ma problemy techniczne”. Wskazuje ona winną wtyczkę lub motyw i zawiera link, który otwiera panel w trybie awaryjnym.
Proszę połączyć się ze stroną przez SFTP lub menedżer plików firmy hostingowej, otworzyć wp-config.php w katalogu głównym i zastąpić wiersz define( 'WP_DEBUG', false ); tymi czterema wierszami:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );
Wstawia się je nad komentarzem, który zamyka edytowalną część pliku (/* That's all, stop editing! Happy publishing. */, po angielsku również w WordPressie zainstalowanym w języku polskim). Następnie proszę ponownie załadować stronę z błędem i otworzyć wp-content/debug.log. WP_DEBUG_DISPLAY ustawione na false zatrzymuje komunikaty w pliku, poza stroną, którą widzą odwiedzający.
Jeśli debug.log pozostaje pusty lub się nie pojawia, błąd zapisał bezpośrednio PHP: proszę poszukać pliku error_log w katalogu głównym strony lub w wp-admin albo sekcji logów błędów w panelu firmy hostingowej.
Błąd krytyczny mieści się w jednym wierszu: typ błędu, jego opis, potem in i pełna ścieżka pliku oraz numer wiersza. Ścieżka to najcenniejsza informacja: wp-content/plugins/nazwa/ wskazuje wtyczkę, wp-content/themes/nazwa/ motyw.
| Komunikat zawiera | Co to oznacza | Krok |
|---|---|---|
Call to undefined function lub Class "…" not found, w wp-content/plugins/nazwa-wtyczki/ | Wtyczka wywołuje kod, którego brakuje: niepełna aktualizacja, wyłączona wtyczka, od której zależy, lub wersja PHP, której nie obsługuje. | Wyłączyć tę wtyczkę, a potem zainstalować ją ponownie lub zaktualizować. |
Allowed memory size of 268435456 bytes exhausted | Skrypt przekroczył pamięć przydzieloną PHP, tutaj 268 435 456 bajtów, czyli 256 MB. | Podnieść WP_MEMORY_LIMIT w wp-config.php, w granicach limitu ustalonego przez firmę hostingową, a potem sprawdzić, co zużywa tyle pamięci. |
PHP Parse error: syntax error, unexpected, w functions.php on line 42 | Błąd składni w pliku, bardzo często po ręcznej zmianie w edytorze motywu. | Poprawić wskazany wiersz albo przywrócić poprzednią wersję pliku. |
Uncaught TypeError lub Uncaught ArgumentCountError, po zmianie wersji PHP | Składnik napisany dla starszej wersji PHP, którego obecna wersja nie chce wykonać. | Zaktualizować składnik. Doraźnie można wrócić do poprzedniej wersji PHP w panelu firmy hostingowej, do czasu jego wymiany. |
Maximum execution time of 30 seconds exceeded | Operacja przekroczyła czas dozwolony przez PHP (max_execution_time). | Ustalić, jaka to operacja (import, kopia zapasowa, generowanie obrazów), i podnieść limit u firmy hostingowej, jeśli operacja jest zasadna. |
define( 'WP_MEMORY_LIMIT', '256M' );
Proszę zmienić nazwę katalogu wtyczki wskazanej w komunikacie, na przykład wp-content/plugins/nazwa-wtyczki na nazwa-wtyczki.off. WordPress nie znajduje już wtyczki i przestaje ją ładować; jej ustawienia pozostają zapisane w bazie danych, a WordPress wyłącza ją przy następnym otwarciu ekranu wtyczek.
W przypadku motywu zmiana nazwy jego katalogu w wp-content/themes przywraca dostęp do panelu, ale odwiedzający widzą pustą stronę, dopóki żaden motyw nie jest aktywny. Proszę od razu otworzyć Wygląd > Motywy: WordPress stwierdza, że aktywny motyw jest uszkodzony, i wraca do zainstalowanego motywu domyślnego.
wp plugin list --status=active
wp plugin deactivate nazwa-wtyczki
wp theme list
wp theme activate twentytwentyfive
Pierwsze polecenie zachowuje listę aktywnych wtyczek, przydatną przed zbiorczym wyłączeniem. Jeśli samo WP-CLI zatrzymuje się na błędzie, proszę dodać do polecenia --skip-plugins --skip-themes: uruchomi się wtedy bez ładowania wtyczek i motywu. Wtyczki z katalogu wp-content/mu-plugins ładują się mimo to; jeśli błąd pochodzi z jednej z nich, proszę zmienić nazwę jej pliku.
Gdy komunikat nie wskazuje żadnego składnika, wp plugin deactivate --all wyłącza wszystkie wtyczki. Jeśli strona wróci, proszę włączać je po kolei, odświeżając stronę po każdej: ostatnia włączona przed powrotem błędu jest tą właściwą.
define( 'WP_DEBUG', false ); i usunąć WP_DEBUG_LOG z wp-config.php.wp-content/debug.log: w katalogu dostępnym z internetu może go przeczytać każdy, a zawiera ścieżki serwera.Z Serenity by Simafri tworzymy Państwa profesjonalną stronę internetową, hostujemy ją, zabezpieczamy i utrzymujemy aktualną. Państwo piszą do nas, my zajmujemy się wszystkim. Nazwa domeny i poczta firmowa w cenie.
Ponieważ wystąpił błąd krytyczny PHP, najczęściej we wtyczce lub motywie. WordPress go przechwytuje, wyświetla ten komunikat i wysyła e-mail na administracyjny adres e-mail strony, z linkiem do trybu awaryjnego. Dziennik debugowania podaje szczegóły błędu i winny plik.
Proszę sprawdzić folder spamu oraz pole Administracyjny adres e-mail w Ustawienia > Ogólne. Bez e-maila proszę włączyć dziennik debugowania w wp-config.php, odczytać błąd w wp-content/debug.log, a potem wyłączyć winny składnik, zmieniając nazwę jego katalogu przez SFTP.
Nie. Ustawienia wtyczek są zapisane w bazie danych, a nie w ich katalogu. Wtyczka o zmienionej nazwie jest widoczna jako wyłączona; po przywróceniu pierwotnej nazwy i ponownym włączeniu na ekranie wtyczek wraca z ustawieniami.
Wadliwy składnik ładuje się tylko w panelu albo potrzebuje tam więcej pamięci. WordPress stosuje WP_MAX_MEMORY_LIMIT do ekranów administracyjnych, a WP_MEMORY_LIMIT do publicznej części strony. Dziennik debugowania daje tę samą informację w obu przypadkach: proszę załadować stronę panelu z błędem, a potem przeczytać debug.log.
Simafri
Porozmawiajmy o Państwa projekcie
Proszę powiedzieć nam w kilku słowach, czego Państwo potrzebują: odpowiemy szybko.
Dziękujemy! Państwa zapytanie zostało wysłane. Wkrótce się odezwiemy.
Wolą Państwo e-mail? Proszę napisać do nas na support@simafri.com.