500 Internal Server Error: dlaczego występuje i jak go naprawić?
Błąd 500 Internal Server Error — to jeden z najczęstszych problemów, z którymi mogą się spotkać właściciele i administratorzy stron internetowych. Oznacza, że na serwerze wystąpił błąd, ale komunikat nie precyzuje jego przyczyny. W tym artykule wyjaśniamy, co może powodować błąd 500 oraz jak skutecznie go rozwiązać.
Możliwe przyczyny błędu 500
Błąd 500 może pojawiać się z różnych powodów. Oto najczęstsze z nich:
- Problemy z serwerem
Często błąd 500 jest efektem technicznych problemów na serwerze, takich jak niedobór zasobów (RAM, CPU).
- Błędy w kodzie strony
Skrypty lub kod witryny mogą zawierać błędy, które powodują awarię strony. Może to być spowodowane nieprawidłowymi żądaniami, błędami w plikach konfiguracyjnych lub problemami z interakcją komponentów strony.
- Problemy z plikiem .htaccess
Plik .htaccess
służy do konfiguracji serwera WWW i może zawierać błędy, które spowodują błąd 500. Na przykład nieprawidłowe reguły przekierowania lub nieprawidłowe parametry mogą spowodować niepowodzenie.
4. Ostatnie aktualizacje
Błędy mogą pojawić się po aktualizacjach CMS-a, wtyczek lub komponentów serwera, jeśli nie zostały one prawidłowo przetworzone.
Jak naprawić błąd 500
- Sprawdź logi serwera WWW
Pierwszym krokiem powinna być analiza logów serwera. To właśnie tam znajdziesz przyczynę błędu — czy to w kodzie, konfiguracji czy na poziomie serwera. Ważne: logi serwera WWW (np. Nginx lub Apache) często zawierają tylko sam kod błędu, bez dokładnych szczegółów — szczególnie w przypadku Nginx, który często działa jako proxy i jedynie przekazuje błąd z backendu.
W zależności od używanego serwera WWW dzienniki mogą znajdować się w następujących lokalizacjach:
Apache:
-
Ubuntu/Debian:
/var/log/apache2/error.log
-
CentOS/AlmaLinux/Rocky Linux:
/var/log/httpd/error.log
Nginx:
/var/log/nginx/error.log
Jeśli serwer jest zarządzany za pomocą panelu sterowania, takiego jak FASTPANEL, przeglądanie dzienników staje się jeszcze łatwiejsze. Aby to zrobić, należy:
-
Przejść do panelu sterowania.
-
Otworzyć kartę strony, zakładka „Logi”.
-
W zakładce „Dziennik błędów frontend” znajdziesz logi Nginx, a w „Dzienniku błędów backend” — logi Apache.
Dodatkowo, wiele CMS-ów i frameworków (WordPress, Joomla, Laravel itd.) prowadzi własne dzienniki błędów. Te dzienniki często zawierają bardziej precyzyjne informacje na temat przyczyny błędu 500. Zaleca się zapoznanie się z dokumentacją systemu w celu znalezienia lokalizacji tych dzienników.
Dzienniki najprawdopodobniej dostarczą szczegółowych informacji o tym, co dokładnie poszło nie tak. Jeśli błąd 500 jest spowodowany błędną konfiguracją lub błędami kodu, będziesz w stanie zobaczyć pliki lub określone linie w nich, które powodują awarię.
- Włączenie logowania błędów po stronie PHP
Aby uzyskać szczegółowe informacje o błędach po stronie kodu, warto włączyć logowanie w samym PHP. Jest to szczególnie przydatne, jeśli błąd występuje na poziomie kodu i nie pojawia się w logach serwera WWW.
W tym celu należy ustawić następujące wartości w pliku php.ini
:
display_errors = Off
log_errors = On
error_log = /var/log/php_errors.log
Gdzie:
-
display_errors
— wyłącza wyświetlanie błędów w przeglądarce -
log_errors
— włącza zapisywanie błędów do logu -
error_log
— ścieżka do pliku logu (PHP musi mieć uprawnienia do zapisu w tym katalogu)
Plik php.ini
zazwyczaj znajduje się w lokalizacji:
-
Debian/Ubuntu:
/etc/php/*/apache2/php.ini
lub/etc/php/*/cli/php.ini
-
CentOS/AlmaLinux:
/etc/php.ini
Można też użyć polecenia:
php -i | grep "php.ini"
W FASTPANEL wystarczy przejść do karty strony → sekcja „Ustawienia PHP”, wyszukać powyższe zmienne (np. display_errors
), zmienić ich wartość i kliknąć „Zapisz”.
- Sprawdź plik .htaccess.
Jeśli błąd pojawił się po modyfikacji .htaccess
, przywróć jego poprzednią wersję.
Jeśli nie masz pewności, co zostało zmienione — tymczasowo zmień nazwę pliku .htaccess
(np. na .htaccess.bak
). Jeśli błąd zniknie, oznacza to, że problem tkwił w tym pliku.
W takim przypadku spróbuj przywrócić plik .htaccess
z kopii zapasowej, o ile jest dostępna, lub użyj domyślnego pliku .htaccess
dla swojego systemu CMS, który możesz pobrać tutaj.
- Sprawdź uprawnienia i właściciela plików
Błąd może być spowodowany nieprawidłowymi uprawnieniami plików lub katalogów. Upewnij się, że katalog główny strony oraz wszystkie podkatalogi i pliki mają poprawne prawa i właściciela.
ls -laR /ścieżka/do/katalogu/strony
Zalecane uprawnienia:
-
Dla katalogów: 755 (odczyt, zapis i wykonanie dla właściciela; odczyt i wykonanie dla innych).
-
Dla plików: 644 (odczyt i zapis dla właściciela; odczyt dla innych).
Właściciel:
Pliki i katalogi powinny należeć do użytkownika, pod którym działa serwer WWW (np. www-data lub apache).
Aby zmienić właściciela i uprawnienia, użyj następujących poleceń:
- Przejdź do katalogu swojej witryny:
cd /ścieżka/do/katalogu/strony
- Zmień prawa i właściciela na prawidłowe:
sudo chown -R yoursiteuser:yoursiteuser . && sudo chmod 644 . -R && sudo chmod +X . -R
Zamień yoursiteuser
na rzeczywistego użytkownika i grupę, do której należy Twoja strona.
- Wyłącz wtyczki i motywy.
W przypadku CMS-ów (np. WordPress), błąd 500 często wynika z konfliktów między wtyczkami lub motywami. Wyłącz wszystkie wtyczki i przełącz motyw na domyślny, aby sprawdzić, czy to rozwiązuje problem.
- Upewnij się, że serwer ma wystarczającą ilość wolnych zasobów do uruchomienia danych stron
- Sprawdź, czy serwer ma wystarczającą ilość wolnego miejsca na dysku:
sudo df -h
- Sprawdź, czy nie zabrakło inode’ów:
sudo df -ih
- Sprawdź dostępność pamięci operacyjnej:
sudo free -mh
- Sprawdź obciążenie procesora:
sudo ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head
- Lub uruchom monitor procesów z pomocą komendy:
sudo top
Jeśli brakuje miejsca na dysku lub inode’ów, możesz sprawdzić, które pliki i katalogi zajmują najwięcej miejsca — skorzystaj z instrukcji zawartej w dedykowanym artykule.
Jeśli obciążenie pamięci operacyjnej i procesora jest zbyt wysokie, przyczyn może być wiele. Spróbuj rozpocząć analizę tego problemu od zablokowania botów wyszukiwania, ponieważ to one często są źródłem zwiększonego obciążenia.
- Upewnij się, że wszystko w porządku z bazą danych.
Najczęściej używaną bazą danych jest MySQL, dlatego poniżej kilka prostych kroków, które pozwolą sprawdzić jej stan:
- Sprawdź, czy usługa MySQL działa:
sudo systemctl status mysql
- Sprawdź log błędów MySQL:
sudo grep -i error /var/log/mysql/error.log
- Przeprowadź sprawdzenie baz danych pod kątem błędów:
mysqlcheck -A -c
Jeśli zostaną wykryte błędy, upewnij się, że posiadasz kopie zapasowe baz danych, których dotyczą problemy. Jeśli ich nie masz, możesz je utworzyć za pomocą polecenia:
mysqldump -u [użytkownik] -p [nazwa_bazy_danych] > /ścieżka/do/pliku/dump.sql
-
Zamień
[użytkownik]
na nazwę użytkownika MySQL. -
Zamień
[nazwa_bazy_danych]
na nazwę bazy danych, którą chcesz wyeksportować. -
/ścieżka/do/pliku/dump.sql
— na ścieżkę, gdzie ma zostać zapisany zrzut.
Następnie należy uruchomić procedurę korekcji błędów za pomocą mysqlcheck
:
mysqlcheck -A --auto-repair -c
- Skontaktuj się z dostawcą hostingu.
Jeśli nie udało Ci się zidentyfikować przyczyny problemu samodzielnie, warto skontaktować się z pomocą techniczną Twojego dostawcy hostingu. Może to pomóc zidentyfikować problemy na serwerze, które nie są widoczne na poziomie użytkownika. Jak wybrać odpowiedniego dostawcę hostingu dowiesz się z tego artykułu.
Podsumowanie
Błąd 500 to nie wyrok dla Twojej strony. Dzięki podstawowym narzędziom diagnostycznym możesz szybko zlokalizować i naprawić przyczynę problemu. Jeśli nie czujesz się na siłach — zawsze możesz zwrócić się o pomoc do specjalistów. Pamiętaj: szybko wykryty i usunięty błąd 500 pozwala uniknąć poważniejszych problemów w przyszłości.