Słowo „server” większości z nas kojarzy się raczej jednoznacznie. Co jednak w przypadku, gdy obok niego pojawi się inne, dość dobrze znane angielskie słowo „error”. Widząc „server error”, duża grupa właścicieli stron internetowych myśli, że tu kończy się ich możliwość działania, a winę za taki, a nie inny stan rzeczy, ponosi firma hostingowa. Nic bardziej mylnego. Brzmi ciekawie? Zaraz się o tym przekonamy!
Chyba każdy już zdążył przyzwyczaić się do tego, że od czasu do czasu wykorzystywane przez nas elektroniczne i mechaniczne urządzenia informują o jakiś błędach czy problemach w swoim działaniu. Nikt nie jest zaskoczony, gdy ekspres do kawy wyświetli komunikat dotyczący wymaganego czyszczenia lub wymiany filtra. Pralka potrafi wysłać wiadomość typu PUSH na telefon komórkowy o problemie z pobraniem wody, a samochód może poinformować nas o niskim stanie naładowania akumulatora. Nie inaczej jest w świecie serwerów, które — działając non-stop w Internecie — odpowiadają za jeden z najważniejszych elementów dzisiejszego biznesu, którym jest publikacja stron internetowych.
Mało kto wini producenta samochodu za to, że akumulator umieszczony w jego pojeździe uległ nadmiernemu rozładowaniu. Przeważnie właściciel takiego auta myśli, że zapomniał odłączyć jakieś zużywające sporo prądu urządzenie od gniazda 12 V. Od razu taka osoba czuje na sobie „wymiar kary”, jaką może ponieść, gdyby przyszło jej z tego powodu zamawiać pomoc drogową i awaryjnie otwierać, czy uruchamiać pojazd. Trochę inaczej ta sama osoba podchodzi do swojej strony internetowej. Nierzadko można przeczytać wypowiedzi właścicieli stron WWW, którzy kategorycznie oznajmiają, że skoro ich strona funkcjonuje przez 10 lat bez żadnych problemów, to każdy ewentualny błąd z nią związany (nasz tytułowy „error”) jest wyłącznie winą firmy hostingowej udostępniającej serwer, na którym strona jest umieszczona.
Internal Server Error
W dosłownym tłumaczeniu „Internal Server Error” to błąd wewnętrzny serwera. Jest to jeden z komunikatów diagnostycznych protokołu HTTP (ang. Hypertext Transfer Protocol). Obok błędu 500 mamy całą rodzinę błędów rozpoczynających się na 5xx (np. 501, 503, 504 itd.), a także rozpoczynające się na 4xx (401, 404, 408 itd.) oraz kody informacyjne serii 2xx i 3xx. Wielu użytkowników Internetu spotkało się na pewno z błędem 404, który oznacza „nie znaleziono” (ang. Not found). Błąd 404 pojawia się wówczas, gdy strona internetowa odwołuje się do zasobu, którego fizycznie serwer nie jest w stanie odnaleźć. Brak, np. pliku, może być spowodowany albo niepoprawną budową linku odsyłającego, albo fizycznym usunięciem pliku z serwera. Widząc komunikat „404”, mało kto wini firmę hostingową za to, że określonego pliku na serwerze nie ma, raczej właściciel strony zastanawia się, kiedy ów plik usunął z serwera.
Co jednak, gdy serwer nie jest w stanie dokładnie sprecyzować, jaki problem pojawił się przy przetwarzaniu strony internetowej? Nie każdą bowiem nieprawidłowość można określić na poziomie protokołu HTTP. Dlatego — gdy serwer, na którym umieszczamy swoją stronę, nie posiada informacji, jak zaprezentować dany „error”, na który napotkał — na ogół wyświetli nam komunikat „Internal Server Error”, podając jeszcze identyfikator liczbowy „500”.
500-tka na stronie WWW
Gdy na stronie internetowej, którą się zajmujemy, nagle pojawi się błąd „Internal Server Error”, często zapominamy o możliwości samodzielnej diagnostyki takiej nieprawidłowości. Jest ona niezwykle prosta, ale — aby ją skutecznie przeprowadzić — trzeba znać kilka podstawowych przyczyn, dla których serwery wyświetlają błędy 500 zamiast oczekiwanych zasobów WWW. Często, gdy już zobaczymy błąd 500, nie jest możliwe wykonanie jakichkolwiek czynności na stronie. Jeżeli korzystamy z systemu zarządzania treścią, takiego jak np. WordPress, błąd 500 może uniemożliwić nawet zalogowanie się do zaplecza strony. Wszystko zostaje zablokowane, zostaje tylko serwer, my i… wiedza, jak radzić sobie z błędami 500 na stronach WWW.
Na serwerach nazwa.pl utrzymywanych jest kilkaset tysięcy stron internetowych. Każda strona jest unikalna, każda działa niezależnie. Ale jak pokazuje statystyka, nazywana niekiedy królową nauk, dzięki tak dużej próbie można dość łatwo znaleźć charakterystyczne przyczyny, które powodują, że zamiast strony internetowej nagle pojawia się komunikat, którego nikt w tym miejscu nie chciałby zobaczyć.
Leczymy błąd 500 bez ZUS i NFZ 😊
W sytuacji nieoczekiwanego błędu 500 warto w pierwszej kolejności sprawdzić, czy nasza witryna, o ile korzysta z połączenia szyfrowanego SSL, ma ważny certyfikat. Wywoływanie części zasobów strony przez połączenie szyfrowane, a części przez połączenie nieszyfrowane, może spowodować wystąpienie komunikatu o błędzie. To jeden z przypadków, gdy strona „nagle przestaje działać”. Nagle, gdyż w określonym momencie kończy się ważność certyfikatu. To, co musimy w takim przypadku zrobić, to zaktualizować certyfikat, korzystając z CloudHosting Panelu.
Aplikacje internetowe mogą się automatycznie aktualizować. Wraz z pojawianiem się nowych wersji PHP, producenci oprogramowania, takiego jak np. WordPress, wydają nowe wersje swoich CMS-ów. Duża grupa właścicieli stron internetowych słusznie wyznaje zasadę, że warto włączyć automatyczne aktualizacje swoich witryn, szczególnie gdy korzystamy, jak w przypadku WordPressa, z rozwiązań o otwartym kodzie źródłowym. Takie aktualizacje mogą jednak spowodować, że strona przestanie być kompatybilna z wersją PHP, która jest ustawiona na serwerze. Podobnie jest w przypadku dodatkowych wtyczek do takiego CMS-u, które również mogą aktualizować się automatycznie, a przez to stawać się niekompatybilnymi z działającą na serwerze wersją PHP. Jeżeli pojawi się błąd 500, warto sprawdzić, czy zmiana wersji PHP go usunie. Taką zmianę w kilka chwil można wykonać, korzystając z CloudHosting Panel.
Pozostając przy CMS-ach z otwartym kodem źródłowym, warto powiedzieć, że nieaktualizowanie tych aplikacji w obawie przed niekompatybilnością nowych wersji z PHP też nie jest dobrym rozwiązaniem. Często aplikacje z otwartym kodem są celem ataków hakerskich. Po takim ataku strona zostaje zawirusowana, a złośliwy kod generuje błędy 500. W analizie ataków pomagają logi Access Log serwera, które można pobrać z CloudHosting Panel.
Wiele osób zwraca uwagę na wyniki pozycjonowania swoich stron WWW. Nie ma co ukrywać, że im wyżej strona pojawia się w wynikach Google, tym większą popularność jej to zapewnia. Właściwe pozycjonowanie strony może być zaburzone przez nieodpowiednio skonfigurowane pliki robots.txt czy sitemap.xml. Te pliki (lub ich brak) mogą prowadzić do pojawiania się błędów 500. Warto już na początku tworzenia strony zadbać o odpowiednie zapisy w robots.txt i sitemap.xml, a potem, w trakcie rozbudowy witryny, na bieżąco je aktualizować.
Wraz ze wzrostem popularności strony może okazać się, że utworzona na początku baza danych nie jest w stanie pomieścić wszystkich informacji, które chcemy w niej gromadzić. Miejsce na serwerze FTP także może się wyczerpać. Takie sytuacje również mogą generować komunikaty „Internal Server Error”.
Wśród innych przyczyn występowania błędów 500 można wymienić np. próbę zmiany wersji PHP poprzez plik .htaccess, błędną konfiguracją Web Application Firewall w .htaccess, użycie magic_quotes_gpc, pętlę przekierowań czy nieprawidłową konfigurację połączenia z bazą danych.
Access Log i Error Log – prywatna kopalnia wiedzy
W zależności od tego, co jest powodem wystąpienia błędu 500 na stronie, odpowiednie zapisy, które pozwalają ustalić przyczyny problemu, wprowadzane są do dzienników zdarzeń, nazywanych logami. Logi przechowują ułożone chronologicznie informacje związane z funkcjonowaniem strony WWW. Korzystając z CloudHosting Panel każdy właściciel witryny umieszczonej na hostingu nazwa.pl ma możliwość weryfikacji dwóch typów logów – Access Log i Error Log. Zarówno w jednym dzienniku, jak i w drugim, mogą zapisywać się błędy 500 witryny internetowej.
Access Log, poza informacjami o prawidłowych wywołaniach plików strony WWW, przechowuje również informacje o błędach 500, których powodem jest wynik działania PHP. Może być to zatem błąd samego skryptu PHP czy też próba uzyskania przez PHP dostępu do nieistniejącego pliku. Poniżej przykład błędu 500, zapisanego w Access Log, związanego z nieprawidłową konfiguracją połączenia z bazą danych:
g2_GALLERYSID=54cf2359fc39d018e068f3517bc14d4a&g2_itemId=380 HTTP/1.1” 500 0 „-”
„Mozilla/5.0 (compatible; SemrushBot/7~bl; +http://www.semrush.com/bot.html)” was1
Z kolei Error Log przechowuje informacje o problemach z konfiguracją serwera. Mogą być to zatem błędy w interpretacji ustawień pliku .htaccess, brak certyfikatu SSL czy brak uprawnień dostępu do plików. Poniżej przykład błędu związanego z użyciem niedozwolonej dyrektywy w .htaccess:
SecRuleRemoveById not allowed here
Zachęcamy do zapoznania się w informacjami na temat logów serwera, które prezentujemy w Centrum Pomocy nazwa.pl pod adresem: https://www.nazwa.pl/pomoc/baza-wiedzy/logi-serwera/.
Diagnozujmy!
Śmiało można powiedzieć, że nie taki „Internal Server Error” straszny, jak go niektórzy malują. Warunkiem poznania genezy błędu 500 na stronie jest eliminowanie potencjalnych problemów, które mogą dotyczyć naszej witryny, a których diagnostykę umożliwiają nam tak łatwo dostępne informacje w CloudHosting Panel. Narzędzie do administrowania serwerem, które udostępnia nazwa.pl, jest bowiem pierwszym miejscem, gdzie powinniśmy zajrzeć, jeżeli na naszej stronie internetowej zobaczymy informację o tytułowym błędzie wewnętrznym serwera. Szczegółowe informacje związane z analizą błędów 500 przedstawiamy natomiast w artykule dostępnym w naszym Centrum Pomocy pod adresem https://www.nazwa.pl/pomoc/baza-wiedzy/blad-500-internal-server-error-dlaczego-sie-pojawia/.