Macierz kompatybilności wersji PHP dla PrestaShop (od 1.6 do 9.x)

416 wyświetleń

Macierz kompatybilności wersji PHP dla PrestaShop

Wybór odpowiedniej wersji PHP dla Twojego sklepu PrestaShop to jedna z najważniejszych decyzji infrastrukturalnych, jakie podejmiesz. Uruchomienie niekompatybilnej wersji PHP może spowodować białe ekrany, niedziałające procesy płatności, awarie modułów i luki w zabezpieczeniach. Ten kompleksowy przewodnik obejmuje każdą wersję PrestaShop od 1.6 do 9.x i przyporządkowuje każdą z nich do obsługiwanych wersji PHP, zalecanych konfiguracji i kwestii aktualizacji.

Dlaczego wersja PHP ma znaczenie dla PrestaShop

PHP to serwerowy język programowania, który napędza PrestaShop. Każda główna wersja PHP wprowadza poprawki wydajności, nowe funkcjonalności języka i wycofuje starsze funkcje. Kod źródłowy PrestaShop ewoluuje równolegle z PHP, co oznacza, że nowsze wersje PrestaShop wykorzystują nowoczesne funkcje PHP, jednocześnie rezygnując ze wsparcia dla przestarzałych wersji.

Używanie niewłaściwej wersji PHP powoduje trzy kategorie problemów:

  • Błędy fatalne - Funkcje usunięte w nowszych wersjach PHP (np. funkcje mysql_* usunięte w PHP 7.0, each() usunięta w PHP 8.0) powodują natychmiastowe awarie.
  • Ostrzeżenia o wycofaniu - Wycofane funkcje generują ostrzeżenia, które mogą uszkodzić odpowiedzi AJAX, wyjście JSON i generowanie PDF, gdy display_errors jest włączone.
  • Narażenie na zagrożenia bezpieczeństwa - Wersje PHP, które osiągnęły koniec życia, nie otrzymują już łatek bezpieczeństwa, pozostawiając Twój sklep podatnym na ataki.

Pełna macierz kompatybilności

PrestaShop 1.6.x

Wersja PrestaShopPHP 5.4PHP 5.5PHP 5.6PHP 7.0PHP 7.1PHP 7.2+
1.6.0.x - 1.6.0.14TakTakTakNieNieNie
1.6.1.0 - 1.6.1.4TakTakTakCzęściowoNieNie
1.6.1.5 - 1.6.1.23TakTakTakTakTakNie
1.6.1.24+TakTakTakTakTakNie

Zalecane PHP dla 1.6.x - PHP 7.1. Oferuje najlepszą równowagę między wydajnością a kompatybilnością. Uruchamianie 1.6.x na PHP 7.2+ wymaga modyfikacji plików rdzeniowych, co przerywa ścieżkę aktualizacji i nie jest zalecane.

PrestaShop 1.7.x

Wersja PrestaShopPHP 7.1PHP 7.2PHP 7.3PHP 7.4PHP 8.0+
1.7.0.x - 1.7.4.xTak (zalecane)NieNieNieNie
1.7.5.xTakTak (zalecane)NieNieNie
1.7.6.xTakTak (zalecane)TakNieNie
1.7.7.xTakTakTak (zalecane)CzęściowoNie
1.7.8.xTakTakTakTak (zalecane)Nie

Krytyczne ostrzeżenie - Żadna wersja PrestaShop 1.7 nie obsługuje PHP 8.0 ani nowszego. Jeśli uruchomisz PS 1.7.6 na PHP 8, Smarty natychmiast się zawiesi, ponieważ silnik szablonów używa funkcji usuniętych w PHP 8.0. Usunięcie funkcji each() i zmiany w działaniu array_key_exists() z obiektami powodują błędy fatalne.

PrestaShop 8.x

Wersja PrestaShopPHP 7.2PHP 7.3PHP 7.4PHP 8.0PHP 8.1PHP 8.2PHP 8.3
8.0.0 - 8.0.2Tak (min)TakTakTakCzęściowoNieNie
8.0.3 - 8.0.5Tak (min)TakTakTakTak (zalecane)NieNie
8.1.0 - 8.1.2NieTak (min)TakTakTak (zalecane)CzęściowoNie
8.1.3 - 8.1.7NieTak (min)TakTakTak (zalecane)TakCzęściowo

Zalecane PHP dla 8.x - PHP 8.1. Jest to optimum oferujące pełną kompatybilność, aktywne wsparcie bezpieczeństwa i doskonałą wydajność z kompilacją JIT. PHP 8.1 wprowadza Fibers, Enums, właściwości readonly i typy intersection, z których PrestaShop 8 może korzystać.

PrestaShop 9.x

Wersja PrestaShopPHP 8.1PHP 8.2PHP 8.3PHP 8.4
9.0.xTak (min)TakTak (zalecane)Tak

Zalecane PHP dla 9.x - PHP 8.3 lub 8.4. PrestaShop 9 działa na Symfony 6.4 LTS i wymaga PHP 8.1 jako minimum. PHP 8.4 wprowadza Property Hooks i asymetryczną widoczność, które przyszłe aktualizacje PrestaShop będą wykorzystywać.

Daty zakończenia wsparcia PHP, które musisz znać

Wersja PHPAktywne wsparcie doPoprawki bezpieczeństwa doStatus (2026)
PHP 7.4Lis 2021Lis 2022EOL - Niebezpieczny
PHP 8.0Lis 2022Lis 2023EOL - Niebezpieczny
PHP 8.1Lis 2023Gru 2025EOL - Aktualizuj wkrótce
PHP 8.2Gru 2024Gru 2026Tylko bezpieczeństwo
PHP 8.3Gru 2025Gru 2027Tylko bezpieczeństwo
PHP 8.4Gru 2026Gru 2028Aktywne wsparcie

Jeśli w 2026 roku używasz PHP 7.4 lub 8.0, pracujesz na niewspieranej wersji, która nie otrzymuje już poprawek bezpieczeństwa. Jest to krytyczne ryzyko dla każdego sklepu e-commerce obsługującego dane płatnicze.

Jak sprawdzić aktualną wersję PHP

Metoda 1 - Panel administracyjny PrestaShop

Przejdź do Zaawansowane > Informacje. Sekcja Informacje o serwerze wyświetla Twoją wersję PHP wraz z limitem pamięci, maksymalnym czasem wykonania i innymi istotnymi ustawieniami.

Metoda 2 - Plik PHP Info

Utwórz plik o nazwie phpinfo.php w katalogu głównym sklepu o następującej treści:

<?php phpinfo();

Uzyskaj do niego dostęp przez przeglądarkę pod adresem https://twojsklep.com/phpinfo.php. Usuń ten plik natychmiast po sprawdzeniu - ujawnia wrażliwe szczegóły konfiguracji serwera.

Metoda 3 - Linia poleceń

php -v
php -r "echo PHP_VERSION;"

Pamiętaj, że wersja PHP CLI może różnić się od wersji PHP serwera web. Zawsze weryfikuj przez interfejs webowy lub phpinfo().

Typowe problemy przy nieprawidłowej wersji PHP

Biały ekran śmierci (WSOD)

Najczęstszy objaw niekompatybilności PHP. Sprawdź log błędów PHP (zazwyczaj pod /var/log/php-errors.log lub dostępny przez panel hostingowy). Typowe błędy to:

Fatal error: Uncaught Error: Call to undefined function mysql_connect()
Fatal error: Uncaught Error: Call to undefined function each()
Fatal error: Cannot use "parent" when current class scope has no parent

Ostrzeżenia o wycofaniu psują AJAX

Gdy display_errors = On i aktualizujesz PHP, ostrzeżenia o wycofaniu są dołączane do odpowiedzi AJAX. To psuje parsowanie JSON w panelu administracyjnym, powodując ciche awarie funkcji takich jak wyszukiwanie produktów, wyszukiwanie klientów i tworzenie zamówień. Rozwiązanie:

; php.ini
display_errors = Off
log_errors = On
error_log = /sciezka/do/php-error.log

Niekompatybilność modułów

Moduły firm trzecich mogą nie obsługiwać Twojej wersji PHP. Przed aktualizacją PHP sprawdź kompatybilność każdego zainstalowanego modułu. Typowe problematyczne obszary:

  • Moduły używające create_function() - usunięta w PHP 8.0
  • Moduły używające funkcji mysql_* - usunięte w PHP 7.0
  • Moduły używające pozycyjnego dostępu do ciągów z nawiasami klamrowymi $str{0} - usunięte w PHP 8.0
  • Moduły nieobsługujące nullable typów zwracanych - bardziej restrykcyjne od PHP 8.1+

Jak bezpiecznie zaktualizować PHP dla PrestaShop

Krok 1 - Audyt aktualnej konfiguracji

Zanim cokolwiek zmienisz, udokumentuj swoje obecne środowisko:

php -v                    # Aktualna wersja PHP
php -m                    # Załadowane rozszerzenia
php -i | grep memory      # Limit pamięci
php -i | grep max_exec    # Limit czasu wykonania

Krok 2 - Sprawdź kompatybilność modułów

Przejrzyj każdy zainstalowany moduł. Sprawdź dokumentację dewelopera modułu pod kątem obsługi wersji PHP. Jeśli moduł nie był aktualizowany od ponad dwóch lat, prawdopodobnie jest niekompatybilny z PHP 8.x.

Krok 3 - Najpierw przetestuj na stagingu

Nigdy nie aktualizuj PHP na serwerze produkcyjnym bez testów. Utwórz kopię staging swojego sklepu i przetestuj z nową wersją PHP. Sprawdź:

  • Strony front office ładują się prawidłowo
  • Strony produktów, kategorii, strony CMS
  • Proces koszyka i zamówienia kończy się poprawnie
  • Moduły płatności przetwarzają transakcje testowe
  • Funkcjonalność back office działa (edycja produktów, zarządzanie zamówieniami)
  • Wszystkie moduły firm trzecich działają prawidłowo
  • Zadania cron wykonują się bez błędów

Krok 4 - Aktualizacja z planem wycofania

Większość dostawców hostingu pozwala na zmianę wersji PHP z panelu sterowania (cPanel, Plesk, DirectAdmin). Zachowaj poprzednią wersję PHP dostępną do szybkiego wycofania, jeśli pojawią się problemy.

Krok 5 - Wyczyść wszystkie cache po aktualizacji

Po zmianie wersji PHP wyczyść każdą warstwę cache:

# Wyczyść cache PrestaShop
rm -rf var/cache/prod/* var/cache/dev/*

# Wyczyść skompilowane szablony Smarty
rm -rf var/cache/smarty/compile/* var/cache/smarty/cache/*

# Jeśli używasz OPcache, uruchom ponownie PHP-FPM
systemctl restart php8.3-fpm

# Wyczyść cache CDN (Cloudflare, itp.)

Najlepsze praktyki konfiguracji PHP dla PrestaShop

Niezależnie od wybranej wersji PHP, te ustawienia są niezbędne dla optymalnej wydajności PrestaShop:

; Zalecane ustawienia php.ini
memory_limit = 512M
max_execution_time = 300
max_input_vars = 10000
post_max_size = 32M
upload_max_filesize = 32M

; Ustawienia OPcache (krytyczne dla wydajności)
opcache.enable = 1
opcache.memory_consumption = 256
opcache.interned_strings_buffer = 32
opcache.max_accelerated_files = 16229
opcache.revalidate_freq = 60
opcache.fast_shutdown = 1

; Wymagane rozszerzenia
extension = intl
extension = zip
extension = gd
extension = curl
extension = mbstring
extension = openssl
extension = pdo_mysql
extension = fileinfo

Uwagi dla deweloperów modułów

Jeśli rozwijasz moduły PrestaShop, musisz starannie rozważyć kompatybilność PHP:

  • Minimalna wersja PHP - Celuj w PHP 7.2 jako minimum dla modułów, które powinny działać na PrestaShop 8.0+, lub PHP 8.1 dla modułów przeznaczonych wyłącznie dla PrestaShop 9.
  • Używaj PHPStan lub Psalm - Narzędzia analizy statycznej wykrywają niekompatybilności wersji PHP, zanim zrobią to Twoi użytkownicy.
  • Unikaj składni specyficznej dla wersji - Funkcjonalności takie jak wyrażenia match (PHP 8.0), enums (PHP 8.1) i właściwości readonly (PHP 8.1) ograniczają Twój moduł do tych wersji PHP i wyższych.
  • Testuj na wielu wersjach - Używaj kontenerów Docker z różnymi wersjami PHP, aby testować moduł na całym zakresie kompatybilności.

Często zadawane pytania

Czy mogę uruchomić PrestaShop 1.7 na PHP 8?

Nie. Żadna wersja PrestaShop 1.7 oficjalnie nie obsługuje PHP 8.0 ani nowszego. Chociaż niektórzy użytkownicy zastosowali łatki, aby częściowo to uruchomić, nie jest to wspierane i będzie powodować problemy przy aktualizacjach. Właściwą drogą jest migracja do PrestaShop 8.x.

Czy powinienem używać PHP 8.4 z PrestaShop 8.1?

Niezalecane. PrestaShop 8.1 został opracowany i przetestowany głównie z PHP 8.1. Chociaż PHP 8.2 jest częściowo obsługiwany w późniejszych wersjach 8.1.x, PHP 8.4 wprowadza zmiany, które mogą powodować problemy ze starszymi komponentami Symfony. Pozostań przy PHP 8.1 dla PrestaShop 8.x.

O ile szybszy jest PHP 8.x w porównaniu z 7.x?

Benchmarki pokazują, że PHP 8.1 jest około 20-30% szybszy niż PHP 7.4 dla typowych obciążeń PrestaShop. Kompilator JIT zapewnia największą korzyść przy zadaniach obliczeniowych. Dla operacji związanych z I/O (zapytania do bazy danych, odczyt plików) poprawa jest mniejsza, ale nadal mierzalna.

Czy aktualizacja PHP wymaga aktualizacji PrestaShop?

Niekoniecznie, ale obie rzeczy idą w parze. Możesz zaktualizować PHP w obsługiwanym zakresie dla swojej wersji PrestaShop bez aktualizacji samego PrestaShop. Jednak jeśli chcesz używać nowoczesnej wersji PHP (8.3+), będziesz potrzebować PrestaShop 8.1 lub 9.x.

Czy ta odpowiedź była pomocna?

Masz jeszcze pytania?

Can't find what you're looking for? Send us your question and we'll get back to you quickly.

Loading...
Back to top