Wyświetlanie błędów w WordPress może nie należy do najciekawszych tematów, ale na pewno niektórym początkującym użytkownikom WordPress pare przemyśleń na ten temat może się przydać. 🙂 Jak wiadomo, na pewno nie wszystkim, aktualizacje są sprawą kluczową w kwestiach bezpieczeństwa. Stale rozwijane są komponenty z których korzysta WordPress (serwer http, interpreter PHP, baza danych) i podobnie sam WordPress korzysta z coraz to nowszych rozwiązań. Przez to niektóre stare funkcje odchodzą do lamusa, a wiele starych, już nie aktualizowanych dodatków, które z nich korzystały nagle zaczynają sypać błędami, a nawet paraliżują całą stronę – wyświetlając nam biały ekran śmierci WordPress.
I tutaj wkracza wiedza z zakresu, jak ten błąd wyświetlić. 🙂 Nawet jeśli sami nie będziemy w stanie sobie z tym poradzić, to uzyskaną informację o błędzie będziemy mogli przedstawić znawcom PHP/WordPress na przykład na forum społeczności WordPress.
Włączamy wyświetlanie błędów w WordPress
Aby wyświetlić błąd PHP w WordPress, potrzebny jest nam dostęp do plików strony, w tym celu korzystamy z ulubionego klienta FTP (np. FileZilla lub WinSCP).
Po nawiązaniu połączenia edytujemy plik wp-config.php
, znajdujący się w katalogu głównym instalacji WordPress. W otwartym pliku musimy odszukać następującą sekcję, która sama w sobie dostarcza nam kilku istotnych informacji:
/** * Dla programistów: tryb debugowania WordPressa. * * Zmień wartość tej stałej na true, aby włączyć wyświetlanie * ostrzeżeń podczas modyfikowania kodu WordPressa. * Wielce zalecane jest, aby twórcy wtyczek oraz motywów używali * WP_DEBUG podczas pracy nad nimi. * * Aby uzyskać informacje o innych stałych, które mogą zostać użyte * do debugowania, przejdź na stronę Kodeksu WordPressa. * * @link https://codex.wordpress.org/Debugging_in_WordPress */ define('WP_DEBUG', false);
W ostatniej linijce definiującej stałą WP_DEBUG
, zmieniamy jej argument z wartości false
na true
, aby ją „włączyć”:
define('WP_DEBUG', true);
Po zapisaniu pliku na serwerze. Wyświetlanie błędów powinno zostać włączone, a po odświeżeniu białego ekranu śmierci, treść błędu powinna zostać wyświetlona. Treść i kod błędu powinien pomóc nam zidentyfikować problem, oraz namierzyć powodujący je dodatek. Jeżeli nie jesteśmy w stanie sami poradzić sobie z problemem, treść błędu przyda nam się w opisaniu problemu na przykład na forum społeczności WordPress.
Zapisywanie błędów WordPress w pliku
WordPress posiada jeszcze kilka stałych towarzyszących wspomnianej już opcji WP_DEBUG
. Jeżeli chcemy sprawdzić czy nasza strona działa prawidłowo i jest wolna od błędów możliwe jest włączenie logowania błędów do pliku tekstowego. Po aktywacji w katalogu /wp-content/
pojawi się nowy plik debug.log
.
Po określonym czasie możemy wrócić do tego pliku i sprawdzić, czy przez ten czas użytkownicy podczas korzystania ze strony, nie natknęli się na jakieś błędy.
Aby włączyć w WordPress opcję logowania błędów do pliku musimy sami dopisać następującą linijkę w pliku wp-config.php
, najlepiej bezpośrednio poniżej opcji WP_DEBUG
:
define('WP_DEBUG_LOG', true);
Warto dodać, że opcja WP_DEBUG_LOG
działa zależnie od WP_DEBUG
i aby cokolwiek było zapisywane w pliku musi ona być ustawiona na true
.
Powstaje problem, bo być może nie chcemy aby WordPress sypał błędami naszym użytkownikom, ale chcemy wiedzieć czy jest coś co możemy poprawić na stronie. Rozwiązaniem jest skorzystanie ze stałej WP_DEBUG_DISPLAY
.
define('WP_DEBUG_DISPLAY', false);
Włączona opcja czyli true
spowoduje wyświetlanie błędów przez WP_DEBUG
, ustawiona na false
nie będzie wyświetlała błędów na ekranie, ale pozwoli na ich logowanie do pliku przez WP_DEBUG_LOG
.
Przykładowa poniższa konfiguracja nie będzie wyświetlać błędów na ekranie, ale będzie je logować do pliku (z kodeksu WordPress):
// Enable WP_DEBUG mode define( 'WP_DEBUG', true ); // Enable Debug logging to the /wp-content/debug.log file define( 'WP_DEBUG_LOG', true ); // Disable display of errors and warnings define( 'WP_DEBUG_DISPLAY', false ); @ini_set( 'display_errors', 0 );
Na koniec należy pamiętać, aby nie zostawiać opisanych wyżej opcji włączonych na nieokreślony okres czasu. Treści błędów mogą udostępniać informacje o konfiguracji naszego serwera, oraz prowadzić do wskazania używanych przez nas „dziurawych” pluginów, które mogą stać się luką w bezpieczeństwie naszej strony i w efekcie doprowadzić do przykrych konsekwencji.
[…] O tym jak skonfigurować WordPress, aby wyświetlał błędy, i/lub logował je do pliku opisałem w ostatnim wpisie. […]
Nie wiedzieć czemu debug.log nie ma w wp-content 🙁 Czy przyczyną mogą być prawa pliku? A może jest jeszcze inna?
Najprostsze wytłumaczenie, że pliku nie ma, to po prostu brak błędów. 🙂
Żeby sprawdzić, czy plik faktycznie zostanie utworzony przez WordPress, czyli czy konfiguracja serwera pozwoli na logowanie błędów do plików, wystarczy wywołać jakiś błąd umyślnie, kilka przykładów:
Najprościej umieścić wybrany przykład gdzieś na początku pliku
functions.php
w katalogu aktywnego motywu, tak aby WordPress na pewno na niego trafił. Najlepiej skorzystać z pierwszego przykładu, który powinien dodać komunikat do pliku „po cichu”, bez białego ekranu.Jeżeli próba się nie powiodła, możesz jeszcze spróbować utworzyć plik manualnie, albo rzeczywiście zwiększyć prawa dostępu do katalogu.
Definicja stałych
WP_DEBUG
,WP_DEBUG_LOG
iWP_DEBUG_DISPLAY
w plikuwp-config.php
powinna znaleźć się przed tą linijką:Pozdrawiam
[…] Inny błąd? Nie wiesz jaki bo się nie wyświetla? Sprawdź wpis Wyświetlanie błędów w WordPress. […]
często ratuje sprawę 😉 albo też przywrócenie kopii poprzedniej wersji strony, generalnie przed jakimikolwiek pracami warto zrobić backup 😉