Przejdź do głównej zawartości

Błąd wewnętrzny serwera 500: co go powoduje i jak go naprawić

· 4 min aby przeczytać
Customer Care Engineer

jak-naprawic-bledy-wewnetrzne-serwera-500-diagnozowanie-strony-www

Błąd wewnętrzny serwera 500 jest jednym z najczęstszych problemów napotykanych przez właścicieli i administratorów stron internetowych. Sygnalizuje on, że coś poszło nie tak po stronie serwera – nie podaje jednak precyzyjnych diagnoz. Ten artykuł wyjaśnia, co zazwyczaj powoduje błąd 500 i jak można go rozwiązać.


Możliwe przyczyny błędu 500

Błąd 500 może wystąpić z wielu powodów. Najczęstsze z nich to:

  1. Problemy z zasobami po stronie serwera

Często błąd 500 może być spowodowany problemami technicznymi po stronie serwera, takimi jak brak zasobów (RAM, czas procesora).

  1. Błędy w kodzie strony internetowej

Skrypty lub kod strony internetowej mogą zawierać błędy, które powodują awarię. Może to być spowodowane nieprawidłowymi zapytaniami, błędami w plikach konfiguracyjnych lub problemami z interakcją komponentów witryny.

  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 zasady przekierowania lub nieprawidłowe parametry mogą spowodować awarię.

  1. Najnowsze aktualizacje

Błędy mogą wystąpić po aktualizacjach aplikacji stron internetowych lub serwerowych, gdzie zmiany nie zostały poprawnie obsłużone.


Jak naprawić błąd 500

  1. Sprawdź logi serwera WWW

Aby określić przyczynę błędu 500, pierwszym krokiem jest sprawdzenie logów serwera. Logi te zazwyczaj zawierają informacje o awarii – czy jest to błąd kodu, błędna konfiguracja, czy problem na poziomie serwera. Należy jednak pamiętać, że logi serwerów WWW (takie jak z Nginx lub Apache) często rejestrują jedynie wystąpienie błędu i kod odpowiedzi, a nie przyczynę źródłową. Dotyczy to szczególnie Nginx, który zazwyczaj działa jako proxy i po prostu przekazuje błąd z aplikacji backendowej.

W zależności od używanego serwera WWW, logi mogą znajdować się w następujących katalogach:

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 Twój serwer jest zarządzany przez panel sterowania, taki jak FASTPANEL, przeglądanie logów staje się jeszcze łatwiejsze. Aby to zrobić:

  • Zaloguj się do panelu sterowania.

  • Otwórz kartę witryny i zlokalizuj sekcję „Logi”.

  • Zakładka „Frontend Error Log” zawiera błędy serwera WWW Nginx, podczas gdy zakładka „Backend Error Log” zawiera błędy Apache.

Pamiętaj, że wiele systemów CMS i frameworków (WordPress, Laravel, Joomla itp.) utrzymuje własne logi błędów. Te logi często dostarczają bardziej precyzyjnych informacji o przyczynie błędu 500. Skonsultuj dokumentację swojej platformy, aby dowiedzieć się, gdzie przechowywane są te logi.

Logi bardzo prawdopodobnie dadzą Ci szczegółowy wgląd w to, co poszło nie tak. Jeśli błąd 500 jest spowodowany błędną konfiguracją lub problemami z kodem, możesz zobaczyć pliki – a nawet dokładne linie – które powodują awarię.

  1. Włącz rejestrowanie błędów po stronie PHP

Aby uzyskać bardziej szczegółowe diagnozy, włącz rejestrowanie błędów bezpośrednio w PHP – jest to szczególnie przydatne, gdy błąd pochodzi z kodu i nie pojawia się w logach serwera WWW.

Aby to zrobić, ustaw następujące wartości w pliku php.ini:

display_errors = Off

log_errors = On

error_log = /var/log/php_errors.log

Tutaj:

  • display_errors — ukrywa dane wyjściowe błędów w przeglądarce

  • log_errors — zapisuje błędy w pliku dziennika

  • error_log — ścieżka do pliku dziennika (PHP musi mieć uprawnienia do zapisu)

Typowe lokalizacje pliku php.ini:

  • Debian/Ubuntu: /etc/php/*/apache2/php.ini lub /etc/php/*/cli/php.ini

  • CentOS/AlmaLinux: /etc/php.ini

Lub zlokalizuj go za pomocą:

php -i | grep "php.ini"

W FASTPANEL: otwórz kartę witryny → „Ustawienia PHP”, wyszukaj zmienne takie jak display_errors, zmień ich wartości i kliknij „Zapisz".

  1. Sprawdź plik .htaccess

Jeśli błąd pojawił się po edycji .htaccess, przywróć poprzedni stan pliku.

Jeśli nie masz pewności, co dokładnie zostało zmienione, tymczasowo zmień nazwę pliku .htaccess (np. na .htaccess.bak) - jeśli błąd zniknie, problem tkwi w tym pliku.

W takim przypadku spróbuj przywrócić plik .htaccess z kopii zapasowej, jeśli jest dostępna, lub użyj domyślnego pliku .htaccess dla swojego CMS, który możesz uzyskać z tutaj.

  1. Zweryfikuj uprawnienia i własność plików

Nieprawidłowe uprawnienia mogą spowodować błąd 500. Upewnij się, że katalog główny witryny i wszystkie podpliki mają prawidłowe prawa i właściciela:

ls -laR /ścieżka/do/root/twojej/witryny

Zalecane uprawnienia:

  • Dla katalogów: 755 — odczyt, zapis i wykonanie dla właściciela; odczyt i wykonanie dla wszystkich innych.

  • Dla plików: 644 — odczyt i zapis dla właściciela; tylko do odczytu dla wszystkich innych.

Własność:

Pliki i foldery powinny należeć do użytkownika serwera WWW (np. www-data lub apache).

W razie potrzeby można dostosować uprawnienia i własność za pomocą następujących poleceń:

  • Przejdź do katalogu głównego witryny:
cd /ścieżka/do/katalogu/głównego/witryny
  • Ustaw prawidłową własność i uprawnienia:
sudo chown -R twójuserwitryny:twójuserwitryny . && sudo chmod 644 . -R && sudo chmod +X . -R

Zastąp twójuserwitryny rzeczywistym użytkownikiem i grupą, która jest właścicielem Twojej witryny.

  1. Wyłącz wtyczki i motywy.

W przypadku witryn opartych na systemie CMS, takich jak WordPress, błąd 500 często wynika z konfliktów wtyczek lub motywów. Wyłącz wszystkie wtyczki i przełącz się na domyślny motyw, aby sprawdzić, czy rozwiąże to problem.

  1. Upewnij się, że serwer ma wystarczająco dużo wolnych zasobów dla Twoich witryn.
  • Sprawdź, czy masz wystarczająco dużo wolnego miejsca na dysku:
sudo df -h
  • Sprawdź, czy serwer nie wyczerpał się w inode'ach:
sudo df -ih
  • Sprawdź, czy serwer ma wystarczająco dużo pamięci RAM:
sudo free -mh
  • Sprawdź aktualne obciążenie procesora:
sudo ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head
  • Alternatywnie, otwórz monitor procesów za pomocą polecenia:
sudo top

Jeśli wyczerpało Ci się miejsce na dysku lub liczba inode'ów, możesz zidentyfikować, które pliki i katalogi zajmują najwięcej miejsca, postępując zgodnie z instrukcjami w odpowiednim artykule.

Jeśli pamięć RAM lub obciążenie procesora jest nadmiernie wysokie, przyczyny mogą być różne. Rozpocznij dochodzenie, blokując roboty wyszukiwarek, ponieważ często są one źródłem podwyższonego obciążenia.

  1. Zweryfikuj, czy system DBMS działa poprawnie.

Najczęściej będzie to MySQL; poniżej znajduje się kilka szybkich kroków, aby sprawdzić, czy Twoje bazy danych są w porządku.

  • Potwierdź, że usługa MySQL działa:
sudo systemctl status mysql
  • Sprawdź log błędów MySQL:
sudo grep -i error /var/log/mysql/error.log
  • Sprawdź wszystkie bazy danych pod kątem błędów:
mysqlcheck -A -c

Jeśli znaleziono błędy, najpierw upewnij się, że masz kopie zapasowe dotkniętych baz danych. W razie potrzeby utwórz zrzut bazy danych za pomocą:

mysqldump -u [użytkownik] -p [nazwabazy] > /ścieżka/do/pliku/dump.sql
  • Zastąp [użytkownik] nazwą użytkownika MySQL.

  • Zastąp [nazwabazy] nazwą bazy danych, którą chcesz wyeksportować.

  • /path/to/dump.sql to ścieżka, na której zostanie zapisany plik zrzutu.

Następnie uruchom procedurę naprawy błędów za pomocą mysqlcheck:

mysqlcheck -A --auto-repair -c
  1. Skontaktuj się z dostawcą hostingu.

Jeśli nie jesteś w stanie zidentyfikować problemu, warto skontaktować się z pomocą techniczną swojego dostawcy hostingu. Może to pomóc w identyfikacji problemów na serwerze, które nie są widoczne na poziomie użytkownika. Dowiedz się, jak wybrać odpowiedniego dostawcę hostingu w tym artykule.


Wnioski

Błąd 500 nie jest wyrokiem dla Twojej strony internetowej. Dzięki podstawowym narzędziom diagnostycznym możesz szybko znaleźć przyczynę i naprawić problem. Jeśli nie masz pewności co do swoich umiejętności, zawsze możesz zwrócić się do specjalistów. Ważne jest, aby pamiętać, że szybko znaleziony i naprawiony błąd 500 pomoże uniknąć poważniejszych problemów w przyszłości.