Przejdź do głównej zawartości

Jeden post z tagiem "web_servers"

Wyświetl wszystkie tagi

500 Internal Server Error: dlaczego występuje i jak go naprawić?

· 4 min aby przeczytać
Customer Care Engineer

jak-naprawic-wewnetrzny-błąd-serwera-500-rozwiazywanie-strony-internetowej

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:

  1. Problemy z serwerem

Często błąd 500 jest efektem technicznych problemów na serwerze, takich jak niedobór zasobów (RAM, CPU).

  1. 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.

  1. 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

  1. 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ę.

  1. 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”.  

  1. 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.

  1. 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. 

  1. 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.

  1. 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. 

  1. 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
  1. 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.