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

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:
- 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).
- 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.
- 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ę.
- 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
- 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ę.
- 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.inilub/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".
- 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.
- 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.
- 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.
- 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.
- 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.sqlto ś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
- 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.