Błąd serwera 500 (HTTP 500 Internal Server Error) to ogólny komunikat: serwer napotkał problem i nie zrealizował żądania, lecz nie zdradza przyczyny. Tej szukaj w logu błędów. Najczęstsze źródła: błędny .htaccess, wyczerpany limit pamięci PHP, złe uprawnienia plików, wadliwa wtyczka. Naprawa - sprawdź log i cofnij ostatnią zmianę.
Co oznacza błąd 500
HTTP 500 to kod statusu z klasy 5xx, czyli grupy błędów po stronie serwera. To ważne rozróżnienie: kody 4xx (jak 404 czy 403) mówią, że problem leży po stronie klienta lub żądania, a kody 5xx oznaczają, że sam serwer nie dał rady dokończyć operacji. Komunikat 500 jest celowo ogólny - serwer nie pokazuje szczegółów w przeglądarce, bo ujawnianie ścieżek plików i treści błędów obcym byłoby luką bezpieczeństwa.
Konkret: prawdziwa przyczyna zawsze siedzi w logu błędów. Ekran w przeglądarce to tylko zasłona. Dopóki nie zajrzysz do dziennika, zgadujesz.
Warto odróżnić 500 od sąsiednich kodów z tej samej rodziny:
- 500 Internal Server Error - serwer napotkał nieoczekiwany problem (kod, konfiguracja, limit).
- 502 Bad Gateway - serwer pośredniczący dostał błędną odpowiedź od serwera nadrzędnego.
- 503 Service Unavailable - serwer działa, ale chwilowo nie przyjmuje żądań (przeciążenie, przerwa techniczna).
- 504 Gateway Timeout - serwer nadrzędny nie odpowiedział na czas.
Komunikat 500 przybiera różne formy: "500 Internal Server Error", "HTTP Error 500", "wewnętrzny błąd serwera kod błędu 500", a w WordPressie czasem czysto biały ekran, tak zwany ekran białej śmierci (WSOD - White Screen of Death). Za każdym z tych wariantów stoi ta sama klasa problemu.
Przyczyna i rozwiązanie - krok po kroku
Poniżej najczęstsze źródła błędu 500, od najprostszych i najczęstszych do bardziej zaawansowanych. Dla każdego: objaw, jak zweryfikować, jak naprawić. Sprawdź: przed każdą zmianą zrób kopię pliku, który ruszasz. To dziesięć sekund, a ratuje wieczór.
1. Błędny plik .htaccess
Objaw: błąd 500 pojawia się nagle, często po instalacji wtyczki, zmianie przekierowań albo edycji reguł mod_rewrite. Plik .htaccess w katalogu głównym steruje zachowaniem serwera Apache i jedna literówka w dyrektywie potrafi położyć całą stronę.
Jak naprawić:
- Połącz się z serwerem przez FTP lub SSH i znajdź plik .htaccess w katalogu głównym strony (to plik ukryty - włącz pokazywanie plików z kropką).
- Zmień jego nazwę na .htaccess_bak i odśwież stronę. Jeśli błąd zniknął, winowajca jest jasny.
- W WordPressie wygeneruj domyślny .htaccess: wejdź w panel, Ustawienia, Bezpośrednie odnośniki i kliknij Zapisz zmiany. WordPress odtworzy poprawny plik.
Pro tip admina: nie edytuj .htaccess na produkcji na żywo bez kopii. To najczęstsze samobójstwo przy 500.
2. Wyczerpany limit pamięci PHP
Objaw: strona pada przy cięższych operacjach - w edytorze, przy imporcie, na stronach z rozbudowanym układem. To klasyka przy WordPressie z ciężkimi wtyczkami i przy Elementorze.
Domyślny limit bywa ustawiony nisko, na przykład na 50M, podczas gdy serwer pozwala na znacznie więcej (często do 1024M w planach hostingowych). WordPress komfortowo pracuje przy 256M, a Elementor oficjalnie zaleca minimum 256M pamięci PHP.
Jak naprawić - podnieś memory_limit jednym ze sposobów:
- w pliku wp-config.php dodaj wiersz:
define('WP_MEMORY_LIMIT', '256M'); - w pliku php.ini ustaw:
memory_limit = 256M - w .htaccess dodaj:
php_value memory_limit 256M
Krok po kroku: zacznij od wp-config.php, bo działa najczęściej i nie wymaga dostępu do konfiguracji serwera. Jeśli hosting współdzielony blokuje php.ini, zostaje panel hostingu - większość paneli ma przełącznik wersji i limitów PHP.
3. Złe uprawnienia plików i katalogów (CHMOD)
Objaw: 500 po przeniesieniu strony, po rozpakowaniu archiwum albo po ręcznym wgraniu plików przez FTP. Serwer odmawia wykonania skryptu, bo prawa dostępu są ustawione nieprawidłowo.
Zasada jest prosta i stała:
- katalogi: 755
- pliki: 644
- nigdy 777 - to nie naprawa, to otwarte drzwi.
Uprawnienia zmienisz przez FTP (opcja "prawa pliku" lub "CHMOD" w menu kontekstowym klienta) albo przez SSH komendą chmod. Sprawdź: jeśli ktoś poradził Ci ustawić 777, żeby "zadziałało", cofnij to natychmiast. Załatasz jeden błąd, otwierając dziurę bezpieczeństwa.
4. Wadliwa wtyczka lub motyw (WordPress)
Objaw: 500 tuż po aktualizacji, instalacji nowej wtyczki albo zmianie motywu. Bardzo częsta przyczyna białego ekranu. Konflikt wtyczek czy niekompatybilność z wersją PHP potrafi wywrócić stronę - zdarza się to nawet popularnym rozszerzeniom, jak wtyczki SEO w rodzaju RankMath, gdy trafią na starszą konfigurację serwera.
Jak namierzyć winowajcę, gdy nie masz dostępu do panelu:
- Połącz się przez FTP lub SSH i wejdź do katalogu wp-content.
- Zmień nazwę folderu
pluginsnaplugins_off. To wyłącza wszystkie wtyczki naraz. Jeśli strona wraca, problem jest w którejś z nich. - Przywróć nazwę folderu, a potem wyłączaj wtyczki pojedynczo (zmieniając nazwy podkatalogów), aż znajdziesz sprawcę.
- Jeśli to motyw - przełącz tymczasowo na domyślny, zmieniając nazwę aktywnego motywu w wp-content/themes.
5. Błąd w kodzie lub skrypcie PHP
Objaw: 500 po edycji functions.php albo dowolnego pliku PHP. Fatalny błąd (fatal error) w kodzie zatrzymuje wykonanie skryptu i serwer zwraca 500. Najczęstsze źródła to literówka, niekompatybilna składnia po zmianie wersji PHP i wywołanie funkcji, której dana wersja PHP już nie obsługuje.
Jak naprawić:
- Cofnij ostatnią zmianę w kodzie. Jeśli edytowałeś functions.php przez panel WordPressa i straciłeś dostęp, popraw plik przez FTP.
- Włącz zapis błędów, żeby zobaczyć szczegóły. W wp-config.php ustaw tryb debugowania:
define('WP_DEBUG', true);orazdefine('WP_DEBUG_LOG', true);- błędy trafią do pliku wp-content/debug.log zamiast na ekran. - Sprawdź wersję PHP w panelu hostingu. Po aktualizacji hostingu do nowszego PHP starsze motywy i wtyczki bywają niekompatybilne. Trade-off: nowsze PHP to wydajność i bezpieczeństwo, ale wymaga aktualnego kodu.
6. Przekroczone limity hostingu
Objaw: 500 pojawia się przy większym ruchu, na cięższych podstronach albo przy długich operacjach, mimo że kod jest poprawny. Winne bywają limity: czas wykonania skryptu (max_execution_time), liczba procesów, limit CPU lub RAM na koncie. To zależy od ruchu: im więcej odwiedzin i cięższa aplikacja, tym szybciej strona uderza w sufit współdzielonego hostingu.
Jak naprawić:
- Wydłuż max_execution_time w php.ini lub .htaccess komendą
php_value max_execution_time 120, jeśli operacja legalnie potrzebuje więcej czasu. - Sprawdź w panelu hostingu wykresy zużycia CPU i pamięci. Jeśli regularnie dobijasz do limitów, to sygnał, że plan jest za ciasny.
Do tego wątku wrócę w sekcji o tym, kiedy 500 to faktycznie wina infrastruktury.
7. Uszkodzony cache lub sesje
Objaw: 500 po aktualizacji, który trzyma się mimo poprawek. Stary cache serwera, wtyczki cache albo uszkodzone pliki sesji potrafią serwować nieaktualny, zepsuty stan.
Jak naprawić: wyczyść cache aplikacji (wtyczka cache w WordPressie), cache serwera (w panelu hostingu, jeśli używa np. Varnish albo LiteSpeed Cache) oraz pamięć podręczną przeglądarki. To ostatnie omawiam niżej w checklist.
Jak czytać log błędów serwera
Log błędów to jedyne miejsce, gdzie serwer mówi wprost, co poszło nie tak. Bez niego naprawiasz po omacku.
Gdzie go znajdziesz:
- Panel hostingu - w cPanel szukaj sekcji "Error Log" lub "Dziennik błędów", w DirectAdmin analogicznie. To najszybsza droga na współdzielonym hostingu.
- Katalog logs/ na koncie FTP - wiele hostingów trzyma tam dzienniki.
- Serwer Apache - plik /var/log/apache2/error.log (dostęp przez SSH na VPS lub serwerze dedykowanym).
- WordPress - plik wp-content/debug.log, gdy włączysz WP_DEBUG_LOG.
Jak czytać wpis. Typowa linia zawiera znacznik czasu, poziom błędu, ścieżkę pliku i numer linii. Przykład:
[Wed Jun 25 14:03:11] PHP Fatal error: Uncaught Error: Call to undefined function old_func() in /home/user/public_html/wp-content/themes/moj-motyw/functions.php on line 212
Odczyt jest prosty: fatalny błąd PHP, w pliku functions.php aktywnego motywu, w linii 212, wywołano nieistniejącą funkcję. Idziesz do tej linii i poprawiasz. Konkret: numer pliku i linii z logu skraca diagnozę z godzin do minut.
Dostęp do logów na VPS i serwerze dedykowanym najwygodniej masz przez połączenie SSH z serwerem.
- Wyczyść pamięć podręczną przeglądarki (Google Chrome, Mozilla Firefox - to samo działanie w każdej).
- Sprawdź, czy błąd widzą wszyscy, czy tylko Ty (przydają się serwisy typu "is it down").
- Cofnij ostatnią zmianę - wtyczkę, motyw, edycję kodu, wpis w .htaccess.
- Otwórz log błędów i znajdź wpis ze znacznikiem czasu awarii.
- Zmień nazwę .htaccess na .htaccess_bak i odśwież.
- Podnieś memory_limit do 256M.
- Wyłącz wtyczki przez zmianę nazwy katalogu plugins.
Jeśli po tych ośmiu krokach strona nadal zwraca 500, przyczyna jest głębsza - kod, baza danych albo limity hostingu. Wtedy log jest Twoim najlepszym przewodnikiem.
Częste błędy i pułapki
- CHMOD 777 jako "rozwiązanie" - najgorsza rada w internecie. Otwierasz plik na zapis dla każdego. To luka, nie naprawa.
- Edycja plików rdzennych zamiast child theme - zmiany w motywie nadrzędnym znikną przy pierwszej aktualizacji, a przy okazji łatwo wywołać 500.
- Brak kopii przed zmianą - jedna literówka w functions.php bez backupu to droga przez mękę.
- Mylenie 500 z 502 lub 503 - inna klasa problemu, inna diagnoza. 503 to zwykle przeciążenie albo przerwa techniczna, nie Twój kod.
- Ignorowanie wersji PHP - po aktualizacji hostingu do nowszego PHP starsze funkcje przestają działać. Sprawdź kompatybilność motywu i wtyczek.
Kiedy to wina hostingu
Czasem 500 nie ma nic wspólnego z Twoim kodem. Sygnały, że problem leży w infrastrukturze:
- Błąd pojawia się mimo poprawnego, niezmienionego kodu.
- Wraca regularnie przy większym ruchu, a znika, gdy odwiedzin jest mniej.
- W panelu widzisz limity CPU, procesów albo RAM dobite do maksimum.
- TTFB (czas do pierwszego bajtu) jest wysoki, strona muli pod obciążeniem.
- Nie masz dostępu do php.ini ani możliwości podniesienia limitów.
To zależy od ruchu: tani hosting współdzielony dzieli zasoby między wiele kont i pod obciążeniem szybko wprowadza ograniczenia. Efektem bywa właśnie 500 przy szczytach odwiedzin. Dla małej strony firmowej to zwykle nieproblem, ale sklep w sezonie albo portal z ruchem potrafi regularnie uderzać w sufit.
Konkret: jeśli logi są czyste, kod niezmieniony, a 500 wraca przy każdym większym ruchu, rozwiązaniem bywa mocniejszy plan albo migracja na VPS z wyższymi limitami. Gdy dojdziesz do tego etapu, zobacz jak wybrać serwer pod swój projekt - dobór maszyny robisz pod realny ruch, nie pod hasła marketingowe. A jeśli zamiast 500 spotkasz problem z certyfikatem, to zupełnie inny temat - opisuję go w błąd SSL podczas handshake.
FAQ
Co oznacza błąd serwera 500? To ogólny błąd serwera z klasy HTTP 5xx. Serwer napotkał nieoczekiwany problem i nie zrealizował żądania, ale w przeglądarce nie pokazuje szczegółów ze względów bezpieczeństwa. Konkretną przyczynę - kod, konfigurację albo limit - znajdziesz w logu błędów serwera lub w dzienniku debugowania aplikacji.
Czy błąd 500 to wina użytkownika czy serwera? Formalnie to klasa błędów serwera (5xx), a nie klienta jak kody 4xx. W praktyce jednak najczęściej wywołuje go zmiana wprowadzona przez właściciela strony: nowa wtyczka, edycja kodu PHP, błędny wpis w .htaccess albo złe uprawnienia plików. Odwiedzający zwykle nie ma na to wpływu.
Jak naprawić błąd 500 w WordPress? Po kolei: podnieś memory_limit do 256M w wp-config.php, zmień nazwę pliku .htaccess na .htaccess_bak, wyłącz wszystkie wtyczki przez zmianę nazwy katalogu plugins, sprawdź wersję PHP w panelu. Włącz WP_DEBUG, żeby zobaczyć treść błędu w pliku debug.log, i cofnij ostatnią zmianę w kodzie.
Co to błąd 500 w Elementorze? Zwykle wyczerpany limit pamięci PHP albo za niski max_input_vars. Elementor jest zasobożerny i przy dużych stronach domyślne 50M nie wystarcza. Podnieś memory_limit do minimum 256M, a jeśli problem wraca przy zapisie strony, zwiększ też max_input_vars w konfiguracji PHP.
Czy błąd 500 znika sam? To zależy od przyczyny. Jeśli to chwilowe przeciążenie serwera albo krótka przerwa techniczna, strona wróci sama po kilku minutach. Jeśli źródłem jest konfiguracja, kod albo złe uprawnienia, błąd nie zniknie bez naprawy - wymaga ręcznej interwencji i sprawdzenia logu.
Jak sprawdzić przyczynę błędu 500? Otwórz log błędów serwera - w panelu hostingu (Error Log w cPanel lub DirectAdmin) albo plik /var/log/apache2/error.log na VPS. Znajdź wpis ze znacznikiem czasu awarii. Zawiera on ścieżkę pliku i numer linii, co wskazuje dokładne miejsce problemu.
Podsumowanie
W skrócie: błąd 500 to ogólny sygnał, że serwer nie dał rady, a prawda zawsze siedzi w logu błędów. Naprawę prowadź od najprostszego do najtrudniejszego - odśwież i wyczyść cache, cofnij ostatnią zmianę, sprawdź .htaccess i memory_limit, wyłącz wtyczki, a dopiero potem zaglądaj w kod i limity hostingu. Zanim ruszysz jakikolwiek plik, zrób kopię. A gdy logi są czyste, kod niezmieniony, a 500 wraca pod obciążeniem - to znak, że pora spojrzeć na infrastrukturę, nie na kod.