Macierz kompatybilności wersji PHP dla PrestaShop (od 1.6 do 9.x)
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_errorsjest 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 PrestaShop | PHP 5.4 | PHP 5.5 | PHP 5.6 | PHP 7.0 | PHP 7.1 | PHP 7.2+ |
|---|---|---|---|---|---|---|
| 1.6.0.x - 1.6.0.14 | Tak | Tak | Tak | Nie | Nie | Nie |
| 1.6.1.0 - 1.6.1.4 | Tak | Tak | Tak | Częściowo | Nie | Nie |
| 1.6.1.5 - 1.6.1.23 | Tak | Tak | Tak | Tak | Tak | Nie |
| 1.6.1.24+ | Tak | Tak | Tak | Tak | Tak | Nie |
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 PrestaShop | PHP 7.1 | PHP 7.2 | PHP 7.3 | PHP 7.4 | PHP 8.0+ |
|---|---|---|---|---|---|
| 1.7.0.x - 1.7.4.x | Tak (zalecane) | Nie | Nie | Nie | Nie |
| 1.7.5.x | Tak | Tak (zalecane) | Nie | Nie | Nie |
| 1.7.6.x | Tak | Tak (zalecane) | Tak | Nie | Nie |
| 1.7.7.x | Tak | Tak | Tak (zalecane) | Częściowo | Nie |
| 1.7.8.x | Tak | Tak | Tak | Tak (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 PrestaShop | PHP 7.2 | PHP 7.3 | PHP 7.4 | PHP 8.0 | PHP 8.1 | PHP 8.2 | PHP 8.3 |
|---|---|---|---|---|---|---|---|
| 8.0.0 - 8.0.2 | Tak (min) | Tak | Tak | Tak | Częściowo | Nie | Nie |
| 8.0.3 - 8.0.5 | Tak (min) | Tak | Tak | Tak | Tak (zalecane) | Nie | Nie |
| 8.1.0 - 8.1.2 | Nie | Tak (min) | Tak | Tak | Tak (zalecane) | Częściowo | Nie |
| 8.1.3 - 8.1.7 | Nie | Tak (min) | Tak | Tak | Tak (zalecane) | Tak | Częś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 PrestaShop | PHP 8.1 | PHP 8.2 | PHP 8.3 | PHP 8.4 |
|---|---|---|---|---|
| 9.0.x | Tak (min) | Tak | Tak (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 PHP | Aktywne wsparcie do | Poprawki bezpieczeństwa do | Status (2026) |
|---|---|---|---|
| PHP 7.4 | Lis 2021 | Lis 2022 | EOL - Niebezpieczny |
| PHP 8.0 | Lis 2022 | Lis 2023 | EOL - Niebezpieczny |
| PHP 8.1 | Lis 2023 | Gru 2025 | EOL - Aktualizuj wkrótce |
| PHP 8.2 | Gru 2024 | Gru 2026 | Tylko bezpieczeństwo |
| PHP 8.3 | Gru 2025 | Gru 2027 | Tylko bezpieczeństwo |
| PHP 8.4 | Gru 2026 | Gru 2028 | Aktywne 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 parentOstrzeż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.logNiekompatybilność 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 wykonaniaKrok 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 = fileinfoUwagi 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.