Aktualizacja PHP

Aktualizacja PHP — dlaczego warto?


Ten tekst przeczytasz w 12 minut.

Aktualizacja PHP — dlaczego warto?

Język PHP jest jednym z najczęściej używanych języków programowania na świecie służącym do projektowania dynamicznych stron i aplikacji internetowych. Używa się go jako język komunikacji między serwerem a użytkownikiem. Jest stosowany zarówno w przypadku małych, jak i dużych, rozbudowanych witryn. Wykonuje się on po stronie serwera — w przeciwieństwie do języka HTML, który jest wykonywany po stronie przeglądarki. Jest językiem interpretowanym, stąd często mówi się o interpreterach PHP. W tym języku zostały napisane między innymi kody popularnych CMS-ów (np. WordPress, Joomla i Drupal), oprogramowań dla sklepów internetowych (m.in. PrestaShop i Magento) czy popularnych serwisów (takich, jak Wikipedia i Facebook). Gdy aplikacja zostaje napisana w języku PHP, po załadowaniu jej kodu na hosting znajdujący się na nim interpreter przekształca ją w taki sposób, aby aplikacja była widoczna dla osób odwiedzających daną witrynę. Aktualizacja PHP nie ma wpływu na strony stworzone w innych językach.

Oprócz stron internetowych PHP zapewnia również obsługę baz danych (tworzenie, modyfikację, pobieranie plików), stosowanie ciasteczek (ang. „cookies”), szyfrowanie danych czy obsługę plików na serwerze. Język PHP jest stale rozwijany przez jego twórców.

Aktualizacja PHP — dlaczego warto zaktualizować PHP do najnowszej wersji?

Bezpieczeństwo

Dzięki aktualizacjom (nie tylko wersji PHP) otrzymujemy zazwyczaj zwiększone bezpieczeństwo, mobilność i szybkość działania strony, aplikacji, oprogramowania czy innego aktualizowanego podmiotu. W ten sam sposób działa aktualizacja PHP.

Każda aktualizacja PHP oznacza usunięcie błędów, które pojawiły się w poprzedniej wersji. Znacznie zwiększa to bezpieczeństwo Twoich danych i danych użytkowników strony czy aplikacji. Kwestia bezpieczeństwa jest szczególnie ważna dla właścicieli sklepów internetowych, gdyż dane podawane przez klientów (np. numer karty czy adres zamieszkania) muszą być chronione w odpowiedni sposób. Zaniechanie aspektu bezpieczeństwa na stronie może skutkować np. atakiem hakerskim czy wyciekiem danych klientów sklepu. W ten sposób ucierpi nie tylko reputacja Twojego sklepu, ale też osoba odpowiedzialna za jego bezpieczeństwo, gdyż za wyciek danych grozi niemała kara pieniężna. Jednakże nawet jeśli prowadzisz niewielkiego bloga, nie aktualizując PHP, narażasz swoje prywatne dane na niebezpieczeństwo.

Mniej podatności

Największą ilość podatności na ataki zanotowano w 2007 roku, jednakże te podatności zostały wyeliminowane już w nowszej wersji PHP. Oznacza to, że dzięki aktualizacji zwiększono w znacznym stopniu bezpieczeństwo systemów, gdyż w 2008 roku liczba podatności wynosiła już tylko 20 (dla porównania, w 2007 było to aż 114). Podobna sytuacja miała miejsce w 2016 roku, gdy to liczna podatności wynosiła 106, a w 2017 zmniejszyła się do 43. Z wersji na wersję twórcy PHP zabezpieczają jego nowe wersje jeszcze bardziej przed odszukiwaniem ewentualnych podatności. Jednakże im dłużej wersja jest w użyciu, tym łatwiej taką podatność odnaleźć. Dlatego warto aktualizować wersję PHP jak najszybciej, aby uniknąć niebezpiecznych ataków.

Podatności PHP

Najczęściej strony narażane są na: **

  • Ataki DDoS (39,9% wszystkich ataków — przedstawione dane obejmują lata 2000-2019) — atak polegający na zajęciu wszystkich wolnych zasobów, wykonywany z wielu urządzeń jednocześnie.
  • Arbitrary code execution (23,8%) — uruchomienie obcego kodu lub polecenia na atakowanej maszynie czy procesie.
  • Overflow (28%) — przepełnienie (np. bufora).
  • Authentication bypass (11,5%) — niedostateczne zabezpieczenie strony umożliwiające atakującemu pominięcie etapu uwierzytelniania; atakujący może również pominąć ten etap poprzez przechwycenie prawidłowych identyfikatorów sesji lub tzw. ciasteczek.
  • Gain intormation (8%) — atak przeprowadzony lokalnie lub zdalnie pozwalający na zdobycie uprawnień za pomocą złośliwego oprogramowania.
  • Memory corruption (4,2%) — naruszenie bezpieczeństwa pamięci polegające na uszkodzeniu zawartości lokalizacji pamięci przez atakującego.
  • Cross-site scripting (2,7%) — XSS polega na osadzeniu w treści strony złośliwego kodu (np. komentarza pod postem na blogu zawierającego złośliwy skrypt JavaScript zmieniający działanie strony), który powoduje wykonanie przez użytkownika niepożądanych czynności; służy m.in. do wykradania danych, ustawiania linków przenoszących użytkownika do zewnętrznych, spreparowanych stron.
  • Directory traversal (2%) — inaczej nazywany path traversal, atak umożliwiający nieautoryzowany dostęp do systemu plików przez atakującego dzięki wykorzystaniu luk w zabezpieczeniach.
  • SQL injection (1,2%) — wprowadzenie kodu do zapytań SQL, np. poprzez formularz, prowadzące do uszkodzenia danych, wyodrębnienia chronionych danych czy wymuszenia nieprawidłowych warunków logicznych (np. zalogowanie do systemu mimo podania błędnego hasła).
  • HTTP response splitting (0,5%) — atak polegający na wprowadzeniu danych do aplikacji poprzez niezaufane źródło, zazwyczaj właśnie przez zapytanie HTTP, które następnie są wysyłane do użytkownika bez ich uprzedniego sprawdzenia.
  • File inclusion (0,3%) — ta podatność sprawia, że atakujący ma możliwość wysłania dowolnego pliku na serwer lub zmianę ich zawartości.

Szybkość

Jeśli chodzi o szybkość działania stron, jest ona aż czterokrotnie wyższa w przypadku PHP 7.4 niż dla PHP 5.3. W przypadku innych wersji zwiększenie szybkości działania stron wynosi około 180%. Od wersji 7.2 stosowany jest mechanizm Dead Code Elimination, który, jak sama nazwa wskazuje, polega na usuwaniu „martwych instrukcji”, czyli linijek w kodzie, które nie powodują żadnych zmian w działaniu aplikacji czy strony. W przypadku dużych witryn zastosowanie tego mechanizmu może przyspieszyć ich działanie nawet o połowę. Warto również pamiętać, że szybsze działanie strony wpływa na jej pozycję w wyszukiwarce Google. Oprócz tego im szybciej dana strona się ładuje, tym większe prawdopodobieństwo, że użytkownik z niej skorzysta. Ma to szczególne znaczenie w przypadku sklepów internetowych. Co więcej, szybkość działania strony jest najbardziej zauważalną zmianą po aktualizacji dla użytkowników.

Wsparcie twórców

Starsze wersje PHP nie są już wspierane przez jego twórców, a dla najstarszych z nich nie są również wypuszczane łatki bezpieczeństwa, które eliminują ewentualne podatności na ataki. Warto wspomnieć, że w momencie wydania nowej wersji PHP, twórcy od razu określają, do kiedy będzie ona wspierana. W tym samym czasie komunikują oni również datę wydania ostatniej łatki bezpieczeństwa. Zazwyczaj nowa wersja wydawana jest co roku i wspierana przez dwa kolejne lata. Dodatkowo łatki bezpieczeństwa są wydawane zazwyczaj przez rok od zakończenia wspierania wersji i dotyczą tylko krytycznych problemów z bezpieczeństwem. Niestety, gdy w niewspieranej już wersji pojawi się luka w bezpieczeństwie, nie jest ona naprawiana.

Aktualizacja PHP a deweloperzy

Aktualizacja PHP oznacza tyle, co przeniesienie go na nowszą wersję. Dla deweloperów oznacza to np. możliwość korzystania z nowoczesnych funkcjonalności oferowanych przez najnowszą wersję PHP. Przykładem może być lepsza i prostsza obsługa błędów.

Dobrą praktyką jest stała aktualizacja PHP. W przypadku „skoku” między kilkoma wersjami może dojść do niepoprawnego działania strony lub aplikacji. Z tego powodu warto aktualizować wersję PHP w krótkim czasie po wydaniu jego najnowszej wersji.

Jeżeli Twoja witryna opiera się na niewspieranej wersji PHP, nie oznacza to, że w momencie, gdy wersja przestanie być wspierana, Twoja strona przestanie działać. Zmian nie zauważysz od razu, jednakże będzie ona działać wolniej i stanie się potencjalnie niebezpieczna. Co więcej, niektóre przeglądarki mogą przestać wyświetlać przestarzałą witrynę poprawnie, a sama strona straci na jakości.

Dodatkowo warto dodać, że PHP od wersji 7 obsługuje również systemy 64-bitowe.

Najnowsza wersja PHP

Od 7 stycznia dostępna jest najnowsza wersja PHP 8.0.1. Wersję 8 zaprezentowano już w zeszłym roku, a dokładnie 26 listopada 2020 roku. Obecnie jest to zarówno najwydajniejsza, jak i najstabilniejsza wersja. Warto pamiętać, że zwiększona wydajność wiąże się z szybszym działaniem strony oraz mniejszym obciążeniem używanego serwera. Wersje 8.0.x będą w pełni wspierane do 26 listopada 2022 roku. Wsparcie bezpieczeństwa jest zapewnione do 26 listopada 2023 roku, kiedy to ma się pojawić ostatnia łatka bezpieczeństwa.

Co nowego oferuje PHP 8?

  • Union types — możliwość typowania właściwości w wielu zadeklarowanych wariantach (m.in. argumenty funkcji czy typy zwracane) z użyciem wyrażeniem or.
    function foo(int|float $arg):int|float
  • Named properties — pozwala nazywać parametry w wywołaniu funkcji lub metod.
    trim(string: "Hello World!")
  • Attributes — deklaracja metadanych funkcji, klas, właściwości oraz parametrów; poprzednio takie deklaracje wykonywano z użyciem komentarzy DocBlock.
    #[SomeAttribute] class Foo {}
  • Constructor properties — właściwości konstruktorów, które pozwalają na skrócenie ilości kodu klas.
    class Foo {
    public function __construct(private string $foo) {}
    }
  • Null-safe operator — pozwala na bezpieczne wywołanie metod bez obawy o wywołanie metody na wartości null z użyciem znaku zapytania w składni.
    $foo->getChild()?->getName()
  • Match — wyrażenie to jest bardzo podobne do instrukcji warunkowej switch, jednakże umożliwia ono bezpieczne porównywanie typów, wspiera wartości zwracane i nie wymaga użycia klauzuli break.
    return match(1) {
    1 => "foo",
    2 => "",
    }
  • Just-In-Time compilation — dwa silniki kompilacji JIT to zarówno zwiększenie wydajności, jak i szybsze wykonywanie skomplikowanych obliczeń czy złożonych zadań.

PHP 8 wprowadził również szereg poprawek, zmiany w obsłudze błędów, nowy typ mixed (wartość dowolna), wiele nowych i usprawnienie starych funkcji oraz inne, pomniejsze nowości.

Poprzednie wersje PHP

Wersje interpretera PHP, które pojawiły się przed PHP 8, to m.in.: *

  • 3.0 — łatki bezpieczeństwa wydawane do 20 października 2000 roku.
  • 4.0 — łatki bezpieczeństwa wydawane do 23 czerwca 2001 roku.
  • 4.1 — łatki bezpieczeństwa wydawane do 12 marca 2002 roku.
  • 4.2 — łatki bezpieczeństwa wydawane do 6 września 2002 roku.
  • 4.3 — łatki bezpieczeństwa wydawane do 31 marca 2005 roku.
  • 4.4 — łatki bezpieczeństwa wydawane do 7 września 2008 roku.
  • 5.0 — łatki bezpieczeństwa wydawane do 5 września 2005 roku.
  • 5.1 — łatki bezpieczeństwa wydawane do 24 sierpnia 2006 roku.
  • 5.2 — łatki bezpieczeństwa wydawane do 6 stycznia 2011 roku.
  • 5.3 — łatki bezpieczeństwa wydawane do 14 sierpnia 2014 roku.
  • 5.4 — łatki bezpieczeństwa wydawane do 3 września 2015 roku.
  • 5.5 — jedna z najpopularniejszych wersji, wsparcie (łatki) bezpieczeństwa wydawane były do 21 lipca 2016 roku.
  • 5.6 — jedna z najpopularniejszych wersji, wydana 28 sierpnia 2014 roku, wspierana do 19 stycznia 2017 roku, wsparcie bezpieczeństwa do końca 2018 roku.
  • 7.0 — wydana 3 grudnia 2015 roku, wspierana do 3 grudnia 2017 roku, wsparcie bezpieczeństwa do 6 grudnia 2018 roku.
  • 7.1 — wydana 1 grudnia 2016 roku, wspierana do 1 grudnia 2018 roku, wsparcie bezpieczeństwa do końca listopada 2019 roku.
  • 7.2 — wydana 30 listopada 2017 roku, wspierana do końca listopada 2019 roku, wsparcie bezpieczeństwa do końca listopada 2020 roku.
  • 7.3 — wydana pod koniec grudnia 2018 roku, wspierana prawie do końca grudnia 2020 roku, wsparcie bezpieczeństwa do 6 grudnia 2021 roku.
  • 7.4 — w pełni wspierana, wydana 28 listopada 2019 roku, wspierana do 28 listopada 2021 roku, wsparcie bezpieczeństwa do 28 listopada 2022 roku.

Jeżeli korzystasz z jednej z tych wersji, koniecznie zaktualizuj wersję swojego interpretera do najnowszej, gdyż nie są już one wspierane przez ich twórców (oprócz 7.3, dla której nadal są wydawane łatki bezpieczeństwa, oraz 7.4, które nadal jest w pełni wspierane, jednakże zachęcam do zaktualizowania PHP również w tych przypadkach).

Aktualizacja PHP w AZ.pl

Sprawdzanie wersji PHP w Panelu klienta

Aktualizacja PHP nie jest procesem wykonywanym automatycznie. Należy się do niej uprzednio krótko przygotować. Sprawdź, z jakiej wersji interpretera PHP korzystasz. W tym celu:

  1. Zaloguj się do Panelu klienta AZ.pl.
  2. Z menu po lewej stronie wybierz „Usługi WWW”.
    Usługi WWW AZ.pl
  3. Wybierz kafelek z usługą, dla której chcesz sprawdzić aktualną wersję interpretera.
  4. Odnajdź kafelek zatytułowany „Serwer WWW”, a w nim linijkę „Interpreter”. Po prawej stronie odnajdziesz liczbę oznaczającą wersję PHP, z której korzystasz.
    Aktualizacja PHP w AZ.pl

Sprawdzanie wersji PHP z poziomu serwera

Wersję PHP możesz również sprawdzić poprzez stworzenie w głównym katalogu serwera nowego pliku z rozszerzeniem .php o zawartości:

<?php

phpinfo();

?>

Następnie umieść w pasku adresu nazwę strony, na której znajduje się przygotowany plik, oraz jego nazwę po znaku „/”, np. www.example.com/plik.php. W nagłówku wyświetlonej tabeli znajdziesz wersję PHP. Poniżej znajdują się pozostałe informacje o interpreterze. Po zakończonej operacji usuń plik z serwera.

Aktualizacja WordPressa

Jeżeli Twoja witryna opiera się o system zarządzania treścią (CMS, np. WordPress, Drupal, Joomla czy PrestaShop), przed zaktualizowaniem wersji PHP sprawdź, czy posiadasz aktualną wersję takiego systemu. Możesz to zrobić w następujący sposób:

  1. Zaloguj się do WordPressa. Możesz to zrobić, dodając na końcu adresu Twojej strony /wp-admin, np. www.example.com/wp-admin.
  2. Z menu po lewej stronie wybierz „Aktualizacje”. Jak widać na poniższym zdjęciu, w kokpicie wyświetla się również przypomnienie informujące o aktualizacji.
    Aktualizacja WordPressa
  3. Z tego miejsca możesz wykonać wszystkie potrzebne aktualizacje. Aby zaktualizować WordPressa, odnajdź przycisk „Zaktualizuj teraz”.
    Aktualizacja PHP i WP w AZ.pl
  4. Jeżeli nie widzisz tego przycisku, sprawdź, czy aktualizacja jest dostępna. W tym celu odnajdź przycisk „Sprawdź ponownie”.
    Aktualizacja PHP i WP w AZ.pl
  5. Poniżej możesz zaktualizować posiadane przez Ciebie wtyczki. Zaznacz checkbox przy wtyczce, którą chcesz zaktualizować, lub przy opcji „Wybierz wszystko”, aby zaktualizować wszystkie wtyczki. Następnie kliknij przycisk „Zaktualizuj wtyczki”.
    Aktualizacja PHP i WP w AZ.pl
  6. Pod częścią z wtyczkami znajduje się sekcja przeznaczona dla motywów. Postępuj w niej analogicznie do aktualizowania wtyczek.
    Aktualizacja PHP i WP w AZ.pl

Aktualizacja PHP powinna zostać wykonana jedynie, gdy wszystkie szablony, motywy i wtyczki są kompatybilne z daną wersją interpretera. Nigdy nie aktualizuj działającej strony, jeżeli nie masz pewności, że wszystko będzie działać poprawnie. W skrypcie strony czy sklepu może się znaleźć funkcjonalność, której nie obsługuje nowa wersja PHP. Jednak odpowiednie przygotowanie do aktualizacji powinno wyeliminować ewentualne błędy związane z niekompatybilnością wersji PHP.

Kopia zapasowa

Przed wykonaniem aktualizacji zrób kopię zapasową strony i przetestuj na niej poprawność działania witryny oraz sprawdź, czy nie zmienił się jej wygląd. Czasem może zdarzyć się, że motywy, szablony czy wtyczki, z których korzystasz, nie są już aktualizowane. W takim wypadku warto rozważyć ich zmianę. Informacje o kompatybilności wtyczek i motywów WordPressa znajdziesz w oficjalnym repozytorium dodatków. Informacje będą dostępne w zakładce „Aktualizacje”. Operacja nie powinna sprawić trudności osobom z podstawową znajomością obsługi stron internetowych. Możesz również pobrać wtyczkę, która sprawdzi, czy elementy tworzące Twoją stronę są kompatybilne z wersją PHP, do której chcesz uaktualnić interpreter. Pamiętaj jednak, aby odinstalować ją po zakończeniu prac. Każda dodatkowa wtyczka, motyw czy szablon mogą wpłynąć niekorzystanie na prędkość ładowania strony.

Jeżeli po aktualizacjach wykonanych na kopii zapasowej wszystko działa poprawnie, możesz przejść do aktualizacji PHP.

Aktualizacja PHP w Panelu klienta AZ.pl

  1. Zaloguj się do Panelu klienta AZ.pl.
  2. Z menu po lewej stronie wybierz „Usługi WWW”.
    Usługi WWW AZ.pl
  3. Wybierz kafelek z usługą, dla której chcesz zmienić wersję interpretera.
  4. Odnajdź i wybierz kafelek zatytułowany „Serwer WWW”.
    Serwer WWW w Panelu klienta AZ.pl
  5. W polu „Interpreter PHP” z listy rozwijanej wybierz możliwie jak najnowszą wersję PHP. Zatwierdź operację przyciskiem „Wyślij”.
    Interpreter PHP w Panelu klienta AZ.pl

Strona nie wyświetla się poprawnie?

Od wersji 4.9 WordPress wymusza na użytkownikach korzystanie z wersji PHP minimum 7.2. Jeżeli po wykonaniu powyższych kroków (w tym zainstalowania wtyczki sprawdzającej kompatybilność dodatków z najnowszą wersją PHP) Twoja strona nie działa poprawnie, prawdopodobnie jest to spowodowane niekompatybilnym motywem lub wtyczką:

  1. Tymczasowo ustaw motyw WordPressa na jeden z domyślnych (np. Twenty Nineteen)
  2. Wyłącz wszystkie wtyczki (nie usuwaj ich!)
  3. Włącz używany wcześniej motyw. Jeśli witryna nie działa poprawnie, wina leży po jego stronie. Jeżeli witryna działa poprawnie:
  4. Włączaj po kolei wszystkie używane wtyczki. Po włączeniu każdej z nich sprawdź, czy strona działa poprawnie. W ten sposób odnajdziesz niekompatybilną wtyczkę.

Aktualizacja PHP po stronie serwera

Aktualizacja PHP może nastąpić również jedynie dla wybranych katalogów na serwerze. Możesz ją zmienić poprzez edycję pliku .htaccess umieszczonego w katalogu strony WWW. W tym celu:

  1. Utwórz lub zmodyfikuj plik .htaccess w katalogu głównym serwera, lub Twojej strony WWW.
  2. W zawartości pliku dodaj następujący tekst:
    :Location maska
    Use wersja
    :Location
  3. Następny krok jest zależny od kilku czynników:
    1. Maska określa rodzaj i lokalizację plików, jakie mają zostać edytowane.
      1. Dla wszystkich plików PHP będzie to :Location /*.php
      2. Jeżeli chcesz zmienić więcej niż jeden typ plików, np. pliki z rozszerzeniem php, php 4 i perl, będzie to :Location /*.(php|php4|perl)
      3. Dla plików HTML w katalogu „sklep będzie to :Location /sklep/*.html
    2. Wersja wskazuje na wersję interpretera, na jaką chcesz zmienić dane pliki.
      1. Jeżeli chcesz zmienić wersję na PHP 7.3, w pole wersja wpisz php73(analogicznie działa dla pozostałych wersji)
      2. Jeżeli chcesz traktować wybrane pliki jako zwykłe strony HTML, w pole wersja wpisz static

Gdy przeprowadzisz migrację koniecznie sprawdź, czy Twoja strona działa poprawnie. Na chwilę obecną w AZ.pl możesz wybrać 6 wersji PHP do użycia na hostingu (PHP 5.6, PHP 7.1, PHP 7.2, PHP 7.3, PHP 7.4 oraz PHP 8), jednak zachęcamy do korzystania z obecnie wspieranych wersji — PHP 7.3, PHP 7.4 oraz PHP 8.

Jeżeli napotkasz problem podczas aktualizacji interpretera, skontaktuj się z naszym Biurem Obsługi Klienta: telefonicznie pod numerem +48 570 510 570 od poniedziałku do piątku w godzinach 8:00-20:00 oraz w soboty w godzinach 8:00-16:00, za pośrednictwem formularza kontaktowego lub Messengera od poniedziałku do piątku w godzinach 9:00-17:00.

*Źródło: https://www.php.net

**Źródło: https://www.cvedetails.com