Gdy piszę ten tekst mamy niedzielny, prawie zimowy poranek, a więc dzień dla mnie zazwyczaj wolny od pracy, ale w mojej branży często jest tak, że niezależnie od planów różne rzeczy mogą się zdarzyć… Tym razem dostałem e-mail z prośbą o pilną pomoc ze sklepem działającym na WooCommerce (wtyczka do WordPressa). Niby wszystko działa prawidłowo, ale w pewnym momencie na stronie nie widać nic, poza tzw. „białym ekranem śmierci”. Skoro mamy do czynienia ze sklepem, to reakcja powinna być szybka, ale by móc usunąć błąd najpierw trzeba wiedzieć, co go powoduje.

Debugowanie WordPressa

W momencie, gdy coś nie działa prawidłowo na stronie, zazwyczaj zaleca się wyłączenie wszystkich wtyczek, i ew. przełączenie motywu na domyślny. I o ile ma to jakiś sens, to nie jestem zwolennikiem takiego rozwiązania, przynajmniej jeśli nie jest to potrzebne. Nie dość, że na pewien czas „upośledzamy” naszą stronę, która cały czas jest publicznie dostępna, to jeszcze tworzymy w pewnym sensie sztuczne środowisko, w którym błąd może nie występować – w tym momencie czeka nas żmudne włączanie kolejnych wtyczek, kolejnych modułów w poszukiwaniu błędu. Jest to oczywiście jakieś rozwiązanie, ale… Jeśli już na nie się zdecydujemy, to warto pomyśleć o pracy na kopii strony, w przygotowanym do tego celu środowisku.

Zdecydowanie lepiej zacząć poszukiwania od przejrzenia logów – czy to logów webserwera (np. Nginx, Apache2), czy PHP. Często to wystarczy, by trafić na miejsce, które generuje problem.

Jednak z doświadczenia wiem, że zdarzają się sytuacje, gdy logi webserwera i PHP nie pokazują nic złego, a mimo to strona nie działa. Tu z pomocą przychodzi tryb debugowania w wykorzystywanym CMSie – w moim przypadku najczęściej będzie to WordPress.

By aktywować zapis m.in. błędów w WordPressie, wystarczy w pliku wp-config.php dodać kilka linijek:

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

// Bez pokazywania "w przeglądarce"
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );

define( 'SCRIPT_DEBUG', false );

Po tej zmianie (teoretycznie, bo są wyjątki…) wszystkie błędy związane z działaniem WordPressa będą zapisywane w pliku:

wp-content/debug.log

Ze względów bezpieczeństwa, po skończonej analizie warto wyłączyć tryb debugowania, oraz skasować utworzony plik z logami. Można też rozważyć zablokowanie dostępu do pliku np. tylko dla Waszego adresu IP…

(!) Zgłoś błąd na stronie
Potrzebujesz profesjonalnej pomocy? Skontaktuj się z nami!