Błąd 500 Internal Server Error: znajdź przyczynę w logach i przywróć stronę
· 6 min czytania
Co oznacza ten błąd
500 to najogólniejszy błąd serwera: serwer WWW przyjął żądanie, przekazał je aplikacji, a aplikacja zakończyła się błędem, zanim zdążyła wygenerować stronę. Przeglądarka widzi tylko „Internal Server Error” albo białą stronę; prawdziwy komunikat ląduje w logu po stronie serwera. W odróżnieniu od błędu 502 aplikacja działa i odpowiada, tylko odpowiedź jest błędem. W odróżnieniu od błędu 503 nie chodzi o przeciążenie, lecz o kod lub konfigurację.
Dobra wiadomość: błąd 500 prawie zawsze ma dokładny wpis w logu z nazwą pliku i linią. Zła: nowsze wersje WordPressa pokazują zamiast niego „Na tej stronie wystąpił błąd krytyczny”, więc oba poradniki opisują tę samą rodzinę problemów.
Częste przyczyny
- Wtyczka albo motyw po aktualizacji. Nowa wersja wymaga innej wersji PHP albo innej wtyczki, wywołuje nieistniejącą funkcję i kończy się błędem krytycznym przy każdym żądaniu. Najczęstsza przyczyna w WordPressie.
- Zmiana wersji PHP. Dostawca hostingu przełączył konto na nowsze PHP albo usunął stare; kod używa funkcji, których już nie ma („Call to undefined function”, „Uncaught Error”).
- Błąd w
.htaccess. Jedna literówka w dyrektywie, moduł, którego Apache nie ma (mod_rewrite,mod_headers), albo reguła wstawiona przez wtyczkę bezpieczeństwa. Apache odpowiada 500 dla całego katalogu. - Uprawnienia plików. Pliki z prawami
777albo należące do złego użytkownika na hostingu z suPHP/CGI, nieczytelnywp-config.php, katalog bez prawa wykonywania. - Wyczerpany limit pamięci PHP. „Allowed memory size of … bytes exhausted”: duży import, wtyczka galerii, kreator stron.
- Zepsuta aktualizacja albo brakujący plik. Przerwane kopiowanie plików, uszkodzony
vendor/autoload.php, niedokończona migracja. - Baza danych, pełny dysk, sesje. Aplikacja nie może zapisać sesji albo cache, bo dysk jest pełny, albo tabela jest uszkodzona.
Jeśli odwiedzasz cudzą stronę
Odśwież po chwili i spróbuj innej podstrony. Błąd 500 to problem po stronie serwera; nic na Twoim komputerze go nie powoduje i nic go nie naprawi. Jeśli trwa, właściciel musi zajrzeć do logów.
Jeśli to Twoja strona: najpierw sprawdź
Uruchom narzędzie Is it down?: potwierdza kod 500 z zewnątrz i pokazuje, czy błąd dotyczy całej strony, czy tylko adresu, który sprawdzasz. Potem odpowiedz na jedno pytanie: co zmieniło się ostatnio? Aktualizacja wtyczki, nowy motyw, zmiana PHP w panelu, edycja .htaccess. Ostatnia zmiana to pierwszy podejrzany.
Na własnym serwerze albo na hostingu z SSH otwórz logi:
# nginx + PHP-FPM
sudo tail -n 50 /var/log/nginx/error.log
sudo tail -n 50 /var/log/php8.3-fpm.log
# Apache
sudo tail -n 50 /var/log/apache2/error.log
# log PHP aplikacji, jeśli skonfigurowany
tail -n 50 /var/www/przyklad.pl/wp-content/debug.log
Szukaj linii PHP Fatal error, PHP Parse error, Allowed memory size, Invalid command (Apache, .htaccess) albo Permission denied. Ścieżka w komunikacie podaje winną wtyczkę, motyw albo plik.
W WordPressie bez dostępu do logów włącz na chwilę debugowanie w wp-config.php:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
Komunikaty trafią do wp-content/debug.log. Wyłącz debugowanie po naprawie.
Naprawy na własnym serwerze albo hostingu z SSH
1. Wyłącz winną wtyczkę albo motyw
Zmień nazwę katalogu wtyczki, a WordPress ją pominie:
cd /var/www/przyklad.pl/wp-content/plugins
mv nazwa-wtyczki nazwa-wtyczki.off
# albo z WP-CLI
wp plugin deactivate nazwa-wtyczki
wp theme activate twentytwentyfour
Jeśli nie wiesz, która wtyczka, zmień nazwę całego katalogu plugins na plugins.off: strona wróci bez wtyczek, a potem włączasz je po jednej. Motyw sprawdzasz tak samo, przełączając na domyślny.
2. Przywróć właściwą wersję PHP
php -v
ls /etc/php/
sudo update-alternatives --config php
Na własnym serwerze z PHP-FPM wskaż w konfiguracji serwera WWW pulę starszej wersji (fastcgi_pass unix:/run/php/php8.2-fpm.sock;), przetestuj i przeładuj. Na hostingu przełączasz wersję w panelu. Docelowo zaktualizuj kod, nie cofaj PHP na stałe.
3. Napraw .htaccess
cd /var/www/przyklad.pl
mv .htaccess .htaccess.bak
Jeśli strona wraca, winna jest reguła w pliku. Przywróć standardowy blok WordPressa (# BEGIN WordPress … # END WordPress) i dodawaj pozostałe reguły po jednej. Przed każdym przeładowaniem: sudo apachectl configtest.
4. Popraw uprawnienia
sudo chown -R www-data:www-data /var/www/przyklad.pl
find /var/www/przyklad.pl -type d -exec chmod 755 {} \;
find /var/www/przyklad.pl -type f -exec chmod 644 {} \;
chmod 600 /var/www/przyklad.pl/wp-config.php
Na hostingu użytkownikiem jest Twoje konto SSH, nie www-data; sprawdź w panelu, jak nazywa się właściciel plików.
5. Podnieś limit pamięci
W wp-config.php: define('WP_MEMORY_LIMIT', '256M');. Na własnym serwerze w puli PHP-FPM albo php.ini: memory_limit = 256M, potem sudo php-fpm8.3 -t && sudo systemctl reload php8.3-fpm. Jeśli jedna wtyczka potrzebuje pół gigabajta na każde żądanie, lepiej ją wymienić niż karmić.
6. Dysk i baza danych
df -h
df -i
wp db check
Pełny dysk albo wyczerpane i-węzły zatrzymują zapis sesji i cache. Zwolnij miejsce (sudo journalctl --vacuum-size=200M, stare kopie zapasowe), potem napraw tabele przez wp db repair. Jeśli komunikat mówi o bazie danych wprost, zobacz poradnik błąd połączenia z bazą danych.
Gdy to problem dostawcy hostingu
Jeśli po Twojej stronie nic się nie zmieniło, a log jest pusty albo niedostępny, przyczyną może być zmiana na serwerze dostawcy: wersja PHP, moduł Apache, limit pamięci. Wyślij:
Dzień dobry, moja strona przyklad.pl zwraca „500 Internal Server Error” od około 10:20 UTC. Po mojej stronie nie było aktualizacji ani zmian w plikach. Czy w tym czasie zmieniła się wersja PHP, konfiguracja serwera albo limity mojego konta? Proszę też o fragment logu błędów z tego okresu.
Jak zapobiec następnemu
Błąd 500 najczęściej przychodzi z aktualizacją, więc aktualizuj z kopią zapasową i sprawdzeniem po zmianie. Sprawdzanie HTTP w monitoringu stron wyłapuje kod 500 w ciągu minut, a sprawdzanie słowa kluczowego także białą stronę, która odpowiada kodem 200. Awaria? Naprawiamy: Quick Fix poprawia drobne błędy konfiguracji i zwalnia miejsce w stałej cenie, a Deep Fix znajduje przyczynę w logu, wyłącza to, co blokuje stronę, i przywraca jej działanie, przez całą dobę. Zobacz naprawa serwera i naprawa WordPressa na żądanie. Pokrewny błąd: błąd 403 Forbidden, gdy winne są uprawnienia albo reguła bezpieczeństwa.
Co teraz
Sprawdź z zewnątrz
Strona nie działa u wszystkich czy tylko u Ciebie i co odpowiada serwer? Za darmo, bez rejestracji.
Is it down? Sprawdź, czy strona działaAwaria? Naprawiamy.
Na Twoim własnym serwerze albo na hostingu z dostępem SSH: Quick Fix w stałej cenie na częste przyczyny, Deep Fix rozliczany w blokach po 15 minut na resztę, przez całą dobę. Cena przed zamówieniem.
Zamów naprawęWięcej poradników
- Strona nie działa: co zrobić w pierwszych 15 minutach
- Awaria serwera: co sprawdzić i w jakiej kolejności
- Błąd 502 Bad Gateway: znajdź przyczynę i napraw
- Błąd 503: przeciążenie, konserwacja czy limit hostingu?
- Błąd 504 Gateway Timeout: znajdź, co spowalnia stronę
- Błąd 521 i 522 w Cloudflare: serwer źródłowy nie odpowiada
- DNS_PROBE_FINISHED_NXDOMAIN: domena przestała odpowiadać
- ERR_CONNECTION_REFUSED: serwer odrzuca połączenie
- ERR_CONNECTION_TIMED_OUT: serwer nie odpowiada na czas
- Co oznacza „Połączenie nie jest prywatne” i jak to naprawić
- ERR_SSL_PROTOCOL_ERROR: bezpieczne połączenie zawodzi przed certyfikatem
- ERR_TOO_MANY_REDIRECTS: znajdź pętlę przekierowań i ją przerwij
- Błąd 403 Forbidden: co blokuje dostęp do Twojej strony
- ERR_NAME_NOT_RESOLVED: nie można znaleźć nazwy strony
- „Błąd podczas nawiązywania połączenia z bazą danych” w WordPressie: przyczyna i naprawa
- ERR_CONNECTION_RESET: dlaczego połączenie zrywa się w połowie
- Błąd 429 Too Many Requests: który limit blokuje odwiedzających
- ERR_EMPTY_RESPONSE: serwer nie wysłał żadnych danych
- Błąd krytyczny WordPress: znajdź przyczynę i przywróć stronę