Błąd HTTP 500, znany również jako Internal Server Error, jest jednym z najbardziej nieprzyjemnych wydarzeń dla administratorów stron internetowych i użytkowników. W momencie, gdy ten błąd się pojawi, serwer sygnalizuje, że coś poszło nie tak, ale nie jest w stanie jednoznacznie zidentyfikować problemu. W tym artykule omówimy kilka powszechnych przyczyn tego błędu i przedstawimy skuteczne metody jego naprawy.
Rodzaje błędów 5xx
Wyróżniamy kilkanaście błędów z rodziny 5XX. Oto niektóre z nich, które najczęściej się pojawiają:
500 Internal Server Error
Błąd 500 to ogólny kod błędu, który wskazuje, że serwer zidentyfikował problem, ale nie może określić, na czym konkretnie polega ten problem.
501 Not Implemented
Ten błąd wskazuje, że serwer sieciowy nie rozpoznaje ani nie obsługuje żądania, ponieważ nie dysponuje funkcjonalnością wymaganą w zapytaniu.
502 Bad Gateway
Ten błąd występuje, gdy serwer działający jako brama lub serwer proxy otrzymuje odpowiedź z serwera głównego, że żądanie było nieprawidłowe. Błędy 502 wskazują na ogólny problem z komunikacją i nie dostarczają wielu informacji na temat dokładnego problemu.
503 Service Unavailable
Błędy 503 są zwykle tymczasowe i zwykle oznaczają, że serwer jest niedostępny z powodu konserwacji lub przeciążenia.
504 Gateway Timeout
Ten błąd wskazuje, że serwer spełniający rolę bramy lub pośrednika nie otrzymał odpowiedzi od na żądanie wskazanego serwera (HTTP, FTP) w ustalonym czasie lub serwer DNS jest potrzebny do obsłużenia zapytania.
505 HTTP Version Not Supported
Ten błąd pojawia się, gdy serwer nie obsługuje protokołu HTTP zdefiniowanego przez komputer klienta. Może to być problem po stronie klienta, na przykład nieprawidłowy numer wersji protokołu HTTP.
506 Variant Also Negotiates
Błąd 506 jest wyzwalany przez serwer, który jest niepoprawnie skonfigurowany.
507 Insufficient Storage
Na serwerze zabrakło dostępnej pamięci. Te błędy są często wyzwalane, gdy brakuje zasobów wymaganych do uruchomienia aplikacji.
508 Loop Detected
Serwer wykrył nieskończoną pętlę podczas przetwarzania żądania.
509 Bandwidth Limit Exceeded
Osiągnięto limit przepustowości transferu danych określony przez usługodawcę serwera.
510 Not Extended
Błędy 510 występują, gdy serwer nie jest w stanie obsłużyć przychodzącego żądania HTTP, ponieważ brakuje rozszerzenia HTTP potrzebnego do obsługi zapytania.
511 Network Authentication Required
Klient musi się uwierzytelnić, aby uzyskać dostęp do sieci. Ten błąd generowany jest przez serwery proxy używane do kontrolowania dostępu do sieci (np. gdy wymagane jest uwierzytelnienie, aby uzyskać dostęp do sieci).
Najczęstsze przyczyny błędu 500
- błędne ustawienie poziomu dostępu do plików
- błędny wpis w pliku .htaccess
- błędy w skryptach i motywach
- przekroczenie limitu pamięci PHP
- przekroczenie innych parametrów bezpieczeństwa
- niekompatybilna wersja PHP z plikami strony WWW
- brak wystarczającej powierzchni dyskowej
- brak zarezerwowanej powierzchni dla bazy danych
- usunięte lub brakujące pliki strony internetowej
Jak naprawić błąd 500?
1. Sprawdź Logi Serwera
Pierwszym krokiem w diagnozowaniu błędu HTTP 500 jest sprawdzenie logów serwera. W logach znajdziesz cenne informacje dotyczące miejsca, w którym wystąpił błąd. Zazwyczaj logi znajdują się w katalogu „logs” na serwerze lub są dostępne w panelu zarządzania serwerem. Analizuj logi, aby zidentyfikować szczegółowe informacje o błędach, takie jak plik i numer linii kodu, które spowodowały problem.
2. Sprawdź konfigurację w pliku .htaccess
Nieprawidłowości w regułach przepisywania adresów URL mogą skutkować wewnętrznymi błędami serwera. Najczęściej tego typu błędy pojawiają się podczas migracji strony WWW. Skontrolowanie ustawionych przekierowań, może okazać się skutecznym rozwiązaniem. Wprowadzone ustawienia w tym pliku mogą też powodować pętlę przekierowań. Część wpisów serwer może błędnie interpretować, co może skutkować błędem 500. Jedną z takich nieobsługiwanych zmiennych jest php_flag magic_quotes_gpc On , która została wycofana w PHP 5.4.
3. Sprawdź Pamięć i Zasoby
Błąd 500 może być rezultatem wyczerpanej pamięci lub innych ograniczonych zasobów serwera. Upewnij się, że serwer ma wystarczająco dużo pamięci i dostępu do zasobów, aby obsłużyć żądania. Możesz również rozważyć zwiększenie limitów pamięci w pliku konfiguracyjnym serwera.
4. Aktualizuj Oprogramowanie
Czasami błąd HTTP 500 może być wynikiem konfliktów lub błędów w oprogramowaniu. Upewnij się, że wszystkie używane skrypty, aplikacje i silniki serwerowe są zaktualizowane do najnowszych wersji. Wielu deweloperów, którzy tworzą dodatki (moduły, wtyczki, motywy, itp.) zarządza błędami i wprowadza poprawki w nowych wersjach oprogramowania.
5. Sprawdź Prawa Dostępu do Plików
Problemy z prawami dostępu do plików mogą powodować błąd 500. Upewnij się, że pliki i katalogi mają odpowiednie uprawnienia do odczytu i zapisu przez serwer. Błędy w tym obszarze mogą uniemożliwiać serwerowi poprawne wykonanie skryptów. Wartość 755 (rwxr-xr-x) jest domyślnym ustawieniem dla folderów, a 644 (-rw-r—r–) dla plików. Przypadkowa zmiana może doprowadzić do błędu 500. Aby wyeliminować błąd, wystarczy nadać wszystkim zasobom domyślną wartość.
6. Sprawdź, czy ustawiona jest kompatybilna wersja interpretera PHP
Często zdarza się, że system CMS po aktualizacji zwraca błąd 500. Przyczyną może być przestarzała wersja PHP, która już nie jest obsługiwana przez najnowszą wersję CMS WordPress czy Prestashop, oraz zainstalowane w ich obrębie dodatki (komponenty, moduły, pluginy, itp.).
Wspierane wersje interpretera PHP można sprawdzić na następujących stronach:
WordPress:
https://make.wordpress.org/core/handbook/references/php-compatibility-and-wordpress-versions/
Prestashop w wersji 1.6 i 1.7:
Prestashop w wersji 1.8:
https://devdocs.prestashop-project.org/8/basics/installation/system-requirements/
7. Przeglądaj Konfigurację Serwera
Błąd 500 może być rezultatem nieprawidłowej konfiguracji serwera. Sprawdź pliki konfiguracyjne, takie jak plik httpd.conf dla serwera Apache lub nginx.conf dla serwera Nginx. Upewnij się, że wszystkie ustawienia są poprawne, a konfiguracja nie zawiera błędów składniowych.
8. Monitoruj Ruch Sieciowy
Skokowy wzrost ruchu lub ataki mogą przyczynić się do błędu HTTP 500. Korzystaj z narzędzi monitorujących ruch sieciowy, aby zidentyfikować ewentualne ataki lub anomalie w działaniu serwera.
Tryb debugowania aplikacji
W systemach zarządzania treścią warto włączyć tryb debugowania, który pokaże rozszerzony opis błędów i często pozwoli na wykrycie przyczyn ich powstawania.
WORDPRESS:
Plik konfiguracji w CMS WordPress znajduje się w głównym katalogu strony. Jest to plik wp-config.php.
W celu włączenia trybu debugowania w WordPress należy odnaleźć poniższy wpis w pliku wp-config.php i jeśli jego wartość jest ustawiona na „false”, to należy zmienić ją na „true”.
define( 'WP_DEBUG’, true );
Możemy również wymusić zapis logów do pliku w lokalizacji /wp-content/debug.log file. Szczególnie polecamy ten sposób, gdy strona jest widoczna dla odwiedzających.
define( 'WP_DEBUG_LOG’, true );
Za pomocą poniższego wpisu możemy wyłączyć / włączyć wyświetlanie błędów i ostrzeżeń w przeglądarce internetowej. Nie jest zalecane włączenie wyświetlania błędów, gdy strona jest widoczna dla naszych klientów.
define( 'WP_DEBUG_DISPLAY’, true );
PRESTASHOP:
Plik konfiguracyjny w Prestashop znajduje się na ścieżce z głównego katalogu plików strony: /config/defines.inc.php.
Żeby włączyć tryb debugowania, należy zmienić wartość następującego wpisu na „true”:
define(’_PS_MODE_DEV_’, true);
JOOMLA:
Plik konfiguracyjny znajduje się w głównym katalogu: configuration.php.
W celu włączenia trybu debugowania i wyświetlania błędów na stronie należy odszukać następujące wpisy i nadać im następujące wartości:
public $debug = '1′;
public $error_reporting = 'maximum’;
Podsumowanie
Błąd HTTP 500 może być wynikiem różnorodnych problemów, ale z odpowiednim podejściem i narzędziami można go skutecznie naprawić. Kluczowe jest systematyczne podejście do diagnozowania problemu, rozumienie logów serwera i identyfikacja potencjalnych obszarów problemowych. W przypadku braku pewności lub skomplikowanych sytuacji zawsze warto skonsultować się z doświadczonym administratorom lub deweloperem.