WordPress: w witrynie wystąpił błąd krytyczny. Jak żyć?

Czy przydarzył Ci się kiedyś błąd krytyczny w WordPressie? Wystarczy, że zapomnisz średnika w kodzie PHP i problem gotowy. Kłopot może się też pojawić po aktualizacji PHP do wersji 8, ponieważ ta wersja PHP jest znacznie bardziej restrykcyjna niż poprzednie i to, co kiedyś było tylko ostrzeżeniem, teraz może spowodować błąd krytyczny.

Włączenie trybu debugowania

Komunikat na ekranie nie mówi zbyt wiele: „W witrynie wystąpił błąd krytyczny”. Jeśli chcesz się dowiedzieć, co konkretnie spowodowało problem, włącz tryb debugowania.

Zaloguj się do strony przez FTP lub menedżera plików w cPanel i znajdź plik wp-config.php. Znajduje się on w katalogu głównym Twojej strony:

Dodaj do tego pliku następujące linijki:

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

Ważne: powyższy kod musi być umieszczony przed linią /* That's all, stop editing! Happy publishing. */. Umieszczenie go za tą linią nie będzie miało spodziewanego efektu.

Teraz, gdy ponownie wejdziesz na swoją stronę i zobaczysz komunikat o błędzie krytycznym, błąd zostanie zapisany do pliku /wp-content/debug.log. Przykładowy plik debug.log będzie wyglądał tak:

[12-May-2022 15:04:17 UTC] PHP Fatal error:  Uncaught TypeError: implode(): Argument #2 ($array) must be of type ?array, string given in /app/wp-content/themes/astra-child/functions.php:28

W tym przypadku powodem błędu jest nieprawidłowe użycie funkcji implode. W PHP 7.4 kod jeszcze działał, ale w wersji 8.0 już powoduje błąd krytyczny, bo zmieniła się kolejność parametrów w tej funkcji.

Co dalej?

Jeśli błąd tkwi we wtyczce, wyłącz ją, a następnie daj znać autorom wtyczki o problemie.

Jak wyłączyć wtyczkę bez dostępu do kokpitu

Jeśli błąd jest na tyle krytyczny, że nie możesz się zalogować do kokpitu, zmień nazwę folderu wtyczki. Zaloguj się do strony przez FTP lub menedżer plików cPanel i przejdź do katalogu public_html/wp-content/plugins. Znajdź katalog wtyczki i zmień mu nazwę.

Jak zgłosić problem autorom wtyczki

Jeśli wtyczka jest darmowa, daj znać jej autorom na stronie wordpress.org. Wyszukaj swoją wtyczkę i przejdź do sekcji „Wsparcie”:

Jeśli wtyczka jest płatna, wystaw tzw. support ticket. Można to zrobić np. poprzez formularz kontaktowy na stronie wtyczki.

Wyłączenie trybu debugowania

Gdy problem zostanie naprawiony lub zgłoszony, wyłącz tryb debugowania. To ważne, bo plik debug.log jest dostępny publicznie, dla każdego. Zastąp poprzedni kod następującym:

define( 'WP_DEBUG', false );
define( 'WP_DEBUG_LOG', false );
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );

Następnie usuń plik debug.log.

Logowanie do innego pliku

Błędy mogą być logowane do pliku o innej nazwie. Można też zmienić jego lokalizację, żeby trudniej było go podejrzeć obcym.

Zamiast:

define( 'WP_DEBUG_LOG', true );

wklej do pliku wp-config.php coś takiego:

define( 'WP_DEBUG_LOG', '/home/panimarta/domains/panimarta.pl/public_html/bledy-wp.log' );

/home/panimarta/domains/panimarta.pl/public_html/bledy-wp.log to ścieżka bezwzględna na serwerze. Od teraz błędy będą logowane do pliku bledy-wp.log.

Pani Marta
Jestem Marta. Pani Marta. Od kilku lat pracuję w WordPressie i ciągle jestem pod wrażeniem jego możliwości. Na moim blogu dzielę się prostymi sposobami na bezwtyczkowe ulepszenie swojej strony. Jeśli brakuje Ci czegoś w tym wpisie lub chcesz, abym poruszyła temat, na którym Ci zależy, daj znać w komentarzu!

Dodaj komentarz

*

*

*

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *