Błąd 500 w WordPress - jak zdiagnozować i naprawić?
Błąd 500 to komunikat serwera, który mówi tylko tyle, że coś przerwało wykonywanie skryptu. Nie wskazuje przyczyny, bo przyczyna siedzi w logu, a nie na ekranie. Dlatego naprawa zaczyna się od włączenia logowania błędów, a nie od zgadywania, która wtyczka zawiniła. Dobra wiadomość: błąd 500 nie uszkadza treści. Baza danych i pliki zostają nietknięte, więc po usunięciu przyczyny strona wraca w tym samym stanie, w jakim była.
Co oznacza błąd 500 Internal Server Error?
To zbiorcza odpowiedź serwera na sytuację, w której skrypt PHP przerwał pracę i nie zdążył wygenerować strony. Serwer wie, że coś poszło nie tak, ale nie ma nic sensownego do pokazania, więc odsyła kod 500.
Z perspektywy odwiedzającego wygląda to jak awaria całej witryny. Z perspektywy Googlebota to sygnał, żeby wrócić później, i przy dłuższej awarii adresy zaczynają wypadać z indeksu. Kilka godzin nie robi różnicy, kilka dni już tak.
Błąd 500 różni się od dwóch podobnych. Kod 502 i 504 wskazują na problem między serwerami, zwykle po stronie hostingu. Biały ekran bez żadnego kodu oznacza zwykle wyczerpanie pamięci PHP przy wyłączonym wyświetlaniu błędów.
Krok 1: włącz logi, zanim cokolwiek zmienisz
Bez logu naprawa jest zgadywanką. W pliku `wp-config.php` włącz zapisywanie błędów do pliku, zamiast wyświetlać je odwiedzającym:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );Log pojawi się w `wp-content/debug.log`. Odśwież stronę, która zwraca błąd, i przeczytaj ostatnie wpisy - zawierają ścieżkę do pliku i numer linii, czyli dokładnie to, czego szukasz.
Drugie miejsce to log serwera w panelu hostingu, zwykle jako Error Log. Tam trafiają błędy, które wystąpiły, zanim WordPress w ogóle wystartował, na przykład problem z `.htaccess` albo z uprawnieniami do plików.
Po skończonej diagnostyce wyłącz tryb debugowania. Zostawiony na produkcji zapisuje wszystko bez końca i potrafi zapełnić dysk.
Krok 2: wyklucz wtyczkę albo motyw
Najczęstsza przyczyna to konflikt kodu, zwykle po aktualizacji. Sprawdzenie jest proste, o ile masz dostęp przez FTP lub menedżer plików.
Zmień nazwę katalogu `wp-content/plugins` na `plugins-off`. Jeśli strona wróci, przyczyna jest w jednej z wtyczek. Przywróć nazwę i wyłączaj je pojedynczo, aż błąd zniknie.
Jeśli wtyczki nie są winne, zmień nazwę katalogu aktywnego motywu. WordPress wróci do motywu domyślnego i pokaże, czy problem siedzi w szablonie.
Ta metoda działa też bez dostępu do panelu, co jest istotne, bo przy błędzie 500 zwykle nie da się zalogować do administracji.
Krok 3: sprawdź .htaccess, uprawnienia i pamięć PHP
Trzy pozostałe przyczyny odpowiadają za większość reszty przypadków.
| Przyczyna | Objaw w logu | Naprawa |
|---|---|---|
| Uszkodzony `.htaccess` | Invalid command, syntax error | zmień nazwę pliku i zapisz linki bezpośrednie od nowa |
| Wyczerpana pamięć PHP | Allowed memory size exhausted | podnieś limit do 256M |
| Złe uprawnienia plików | Permission denied | katalogi 755, pliki 644 |
| Przekroczony czas wykonania | Maximum execution time | zwiększ limit lub znajdź wolny fragment kodu |
Limit pamięci podnosisz wpisem `define( 'WP_MEMORY_LIMIT', '256M' );` w `wp-config.php`. Jeśli to nie pomaga, ograniczenie siedzi w konfiguracji serwera i trzeba je zmienić w panelu hostingu.
Uprawnień nie ustawiaj na 777. To otwiera zapis dla wszystkich procesów na serwerze i jest jedną z częstszych dróg wejścia przy włamaniach.
Błąd 500 a 502, 503 i biały ekran
Cztery różne objawy bywają mylone, a każdy prowadzi gdzie indziej.
| Kod | Co się stało | Gdzie szukać |
|---|---|---|
| 500 | skrypt PHP przerwał pracę | log WordPressa i log serwera |
| 502 | serwer pośredniczący nie doczekał się odpowiedzi | konfiguracja i obciążenie serwera |
| 503 | usługa chwilowo niedostępna, często tryb konserwacji | plik `.maintenance`, przerwana aktualizacja |
| biały ekran | wyczerpana pamięć przy wyłączonym wyświetlaniu błędów | limit pamięci PHP |
Najczęstszy fałszywy alarm to 503 po przerwanej aktualizacji. WordPress zostawia wtedy plik `.maintenance` w katalogu głównym i witryna zgłasza niedostępność, dopóki tego pliku nie usuniesz. To sekunda pracy, o ile wiadomo, czego szukać.
Kiedy przyczyna leży po stronie hostingu?
Jeśli błąd pojawia się falami, w godzinach największego ruchu, i znika sam, sprawdź obciążenie konta w panelu hostingu. Na współdzielonym serwerze przekroczenie limitu procesów kończy się właśnie kodem 500.
Według ofert popularnych hostingów pakiety za 20-30 zł miesięcznie mają najniższe limity procesów i pamięci, więc to na nich błąd 500 pojawia się najczęściej przy większym ruchu. Przy sklepie albo witrynie z realnym ruchem to pierwsza rzecz do zmiany.
Drugi trop to zmiana wersji PHP. Przejście na nowszą wersję potrafi wyłożyć stary motyw albo wtyczkę bez wsparcia. W panelu hostingu da się wrócić do poprzedniej wersji i sprawdzić, czy to była przyczyna.
Zanim ktokolwiek zacznie grzebać w kodzie, warto zapytać hosting, czy nie zmieniał wersji PHP ani limitów. Co kilka miesięcy okazuje się, że to cała historia.
Krzysztof Czapnik, KC Mobile
Ile kosztuje naprawa i jak długo trwa?
Prosta przyczyna to zwykle kilkadziesiąt minut pracy, bo log wskazuje plik i linię.
Według naszego cennika typowe przypadki, czyli uszkodzony `.htaccess` albo konflikt wtyczek, mieszczą się w 200-500 zł. Dane z trudniejszych zgłoszeń pokazują 500-1000 zł tam, gdzie trzeba przejść przez logi serwera, konfigurację PHP i kod motywu.
Odpowiadamy w ciągu godziny od zgłoszenia, bo przy kodzie 500 strona jest niedostępna dla wszystkich. Po naprawie dostajesz krótki raport: co było przyczyną i co zrobić, żeby się nie powtórzyła.
Jak zmniejszyć ryzyko powtórki?
- Aktualizuj wtyczki pojedynczo, nie wszystkie naraz, żeby wiedzieć, co zepsuło stronę
- Trzymaj kopię zapasową z ostatniej doby i sprawdź raz, czy odtwarzanie działa
- Testuj aktualizacje na kopii, jeśli witryna zarabia
- Usuwaj wtyczki nieużywane, bo nieaktywna wtyczka nadal bywa aktualizowana i nadal potrafi wywołać konflikt
- Pilnuj wersji PHP i wyprzedzaj wymuszone migracje hostingu
Prowadzimy to jako stałą opiekę nad stroną WordPress razem z kopiami zapasowymi i monitoringiem dostępności. Jeśli błąd 500 blokuje Ci stronę teraz, napisz przez formularz na stronie kontakt i wklej ostatnie linie z `debug.log`.
Korzyści
- Diagnoza z logu, nie z zgadywania - wiemy, gdzie szukać: debug.log, error log, .htaccess
- Naprawa bez utraty danych, bo błąd 500 nie narusza treści ani bazy
- Przy okazji wychwytujemy inne problemy: wersję PHP, limity, uprawnienia plików
- Krótki raport po naprawie: co było przyczyną i jak zapobiec powtórce