PrestaShop 9 potrzebuje PHP 8.1 lub nowszego, MySQL 5.7 / MariaDB 10.4 jako minimum oraz 256 MB pamięci na proces PHP — na PHP 7.4 instalator nawet nie wystartuje. To nie lista życzeń, a próg, poniżej którego sklep nie wstanie albo będzie mulił przy każdym zapisie produktu. Poniżej masz wymagania w jednej tabeli, komendy do sprawdzenia serwera i listę rozszerzeń, których brak najczęściej zatrzymuje instalację w kroku 2. Całość zajmuje około 5 minut, jeśli masz dostęp SSH lub panel hostingu.

PrestaShop 9 requirements w jednej tabeli: minimum vs. zalecane

Zanim wgrasz paczkę na serwer, sprawdź cztery wartości: wersję PHP, wersję bazy, memory_limit i obecność HTTPS. Reszta wyjdzie w kroku 2 instalatora. Tabela celowo rozdziela dwie rzeczy, które hostingi lubią mieszać: minimum techniczne — instalator w ogóle wystartuje — oraz minimum, przy którym sklep nie muli, czyli zapis produktu z 20 kombinacjami nie trwa 4 sekund, a import 5 tys. SKU nie kończy się timeoutem.

Trzy pułapki z realnych wdrożeń:

Jeśli hosting deklaruje „PrestaShop obsługujemy”, ale nie potrafi podać wersji PHP i rozmiaru bazy, traktuj to jak brak odpowiedzi. Zakres prac po stronie serwera opisujemy w sekcji wdrożenia PrestaShop.

ParametrMinimum techniczneMinimum bez muleniaZalecane
PHP8.18.2 z OPcache8.3 (8.4 sprawdź w matrycy)
MySQL5.7 (InnoDB)5.7 + tuning InnoDB8.0
MariaDB10.410.610.6–10.11
Serwer HTTPApache 2.4+ z mod_rewrite lub Nginx 1.20+ z rewritejak minimumNginx + PHP-FPM
IISpoza wsparciem——
memory_limit256M384–512M512M
max_execution_time30 s60 s60–120 s
HTTPSTLS 1.2+ (wymóg faktyczny)TLS 1.2+TLS 1.3
Silnik tabelInnoDBInnoDBInnoDB + utf8mb4

PHP 8.1–8.3: próg, który wycina część polskich hostingów

PrestaShop 9 sprawdza wersję PHP na starcie instalatora. Na 7.4 nie zobaczysz nawet formularza konfiguracji bazy — dostaniesz komunikat o niespełnionych wymaganiach. To twarde odcięcie, nie ostrzeżenie: kod PS9 używa typów zwracanych i konstrukcji z PHP 8, więc obejścia nie ma.

Na moment premiery 9.0 wspierane są PHP 8.1, 8.2 i 8.3. PHP 8.4 bywa jeszcze poza oficjalną matrycą — część modułów i bibliotek Composera nie ma dla niego wydania. Aktualną tabelę znajdziesz w dokumentacji deweloperskiej PrestaShop; sprawdź ją przed każdym przełączeniem produkcji, bo lista zmienia się między wydaniami 9.x.

Weryfikacja przez SSH zajmuje minutę:

Gdzie zmienić wersję bez ticketu: DirectAdmin — Domeny → wybrana domena → PHP Version; cPanel — MultiPHP Manager → wybór domeny → 8.3; Plesk — Domeny → PHP Settings (tam też memory_limit); CyberPanel — Websites → Manage → Change PHP Version.

OPcache ustaw konkretnie: opcache.memory_consumption=256, opcache.max_accelerated_files=20000, na produkcji opcache.validate_timestamps=0 — pamiętaj wtedy o systemctl reload php8.3-fpm po każdym deployu, inaczej wdrożysz pliki, których PHP nie widzi. Na stagingu zostaw 1 z revalidate_freq=2. JIT (opcache.jit=tracing, jit_buffer_size=64M) daje na typowym sklepie 0–5%, bo wąskim gardłem jest baza, nie interpreter — nie licz na przełom.

Baza danych: MySQL 5.7 vs. MariaDB — wersje i ustawienia, które mają znaczenie

Warstwa bazy wywala migracje częściej niż PHP. Dwa powody: silnik tabel i charset.

InnoDB jest wymogiem. PS9 zapisuje zamówienie w transakcji i korzysta z kluczy obcych — MyISAM tego nie potrafi. Po migracji ze starej wersji zostają tabele MyISAM od modułów, których już nie używasz. Sprawdź to jednym zapytaniem: SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA='twoja_baza' AND ENGINE<>'InnoDB'; Pusta lista = OK.

Charset utf8mb4 i collation utf8mb4_unicode_ci (lub utf8mb4_general_ci). utf8mb4_unicode_ci sortuje polskie znaki przewidywalnie w listach produktów, general_ci jest szybsze, ale przy porównaniach bywa mniej precyzyjne. Kluczowa różnica to emoji: przy starym, 3-bajtowym utf8 nazwa produktu z ikoną kończy się błędem 1366 „Incorrect string value”.

Parametry do sprawdzenia przed startem:

Wersję odczytasz przez SELECT VERSION(); w kliencie MySQL lub na stronie głównej phpMyAdmin („Serwer: MariaDB 10.6.x”).

Ostrzeżenie o bazach współdzielonych z limitem 1 GB: sklep z 10 tys. produktów, wariantami i logami modułów zajmuje realnie 300–800 MB, a każdy dump zajmuje miejsce podwójnie. Do migracji użyj mysqldump --single-transaction --routines --triggers --default-character-set=utf8mb4 — bez --single-transaction zablokujesz tabele na czas zrzutu. Sam przebieg przenosin opisujemy w artykule wdrożenie PrestaShop krok po kroku.

Wymagane rozszerzenia PHP i limity, o których nie pisze cennik hostingu

Komunikat o niespełnionych wymaganiach w kroku 2 instalatora PS9 w większości przypadków nie oznacza za starego serwera, a jedno brakujące rozszerzenie PHP. Instalator sprawdza listę przed utworzeniem bazy, więc wystarczy jeden czerwony krzyżyk, żeby przerwać proces. Oto co musi być włączone:

Weryfikacja to jedna komenda: php -m | grep -E '^(curl|gd|intl|mbstring|openssl|zip|fileinfo|simplexml|dom|pdo_mysql|iconv) . Jeśli wypisze mniej niż 11 linii, wiesz, czego brakuje. Przy wdrożeniach PrestaShop sprawdzamy to przed zakupem hostingu, nie po — patrz nasza oferta wdrożeń PrestaShop.

Limity: upload_max_filesize i post_max_size. Moduły ważą 5–30 MB, zdjęcia produktowe po 2–5 MB, a import CSV z 10 tys. wierszy potrafi przekroczyć limit czasu. Minimum to 20M, realnie ustaw 64M, przy czym post_max_size musi być równe lub większe od upload_max_filesize. max_execution_time podnieś do 300 s na czas importu.

OPcache nie jest wymagany, ale przy 5–10 tys. SKU skraca czas odpowiedzi odczuwalnie: PHP nie kompiluje tych samych plików przy każdym żądaniu. Ustaw opcache.memory_consumption=128 i opcache.max_accelerated_files=20000 — domyślne 10000 jest za niskie dla PS9. Wpływa to na TTFB, a więc i na Core Web Vitals.

Jak w 5 minut sprawdzić, czy serwer spełnia wymagania (komendy + punktacja)

Masz SSH? Cztery komendy wystarczą:

Bez SSH: wgraj przez FTP lub menedżer plików panelu plik info.php z treścią <?php phpinfo();, otwórz go w przeglądarce i usuń po 10 minutach. Publiczny phpinfo() zdradza wersje bibliotek, ścieżki katalogów i bywa łakomym celem dla botów.

Punktacja startowa 10 pkt:

SytuacjaPunkty
PHP 7.4 lub starsze–5 (dyskwalifikacja)
Brak intl–3
MySQL 5.6–3
memory_limit 128M–2
Brak gd lub gd bez FreeType–2
upload_max_filesize 2M–1
Brak OPcache0 (zalecane, nie wymagane)

Co PrestaShop 9 zmienia w architekturze: Symfony 6.4, Hummingbird i nowe API

Spełnienie wymagań to warunek konieczny, nie wystarczający. PS9 stoi na Symfony 6.4 LTS i to jest zmiana, która odbija się na starszych modułach. Moduły pisane pod 1.6/1.7 często korzystały z legacy kontrolerów i klas pomocniczych. Część z tego nadal działa przez warstwę kompatybilności, ale zachowania zależne od starych hooków w adminie potrafią przestać reagować po aktualizacji — bez błędu w logach, po prostu przycisk nic nie robi.

Hummingbird jest domyślnym motywem PS9. Jeśli masz customowy szablon z 1.7 zbudowany na Classicu i override'ach plików .tpl, nie przeniesie się 1:1 — struktura i nazwy szablonów są inne. Praktyka: najpierw uruchom czysty Hummingbird, potem załóż child theme i przenoś zmiany pojedynczo, porównując wygląd na staging. Przenoszenie całego szablonu hurtem kończy się tygodniem poprawek CSS w produkcji.

Nowe Admin API oparte o API Platform to inna warstwa niż stary webservice z kluczem ws_key. Dla integracji z ERP i systemem magazynowym oznacza to nowe endpointy, inną paginację i inny sposób autoryzacji. Przed migracją ustal z dostawcą ERP, które operacje (stany, zamówienia, ceny) są już przeniesione, a które nadal wymagają starej ścieżki — reszta to pole minowe.

Moduł, który „działał na 1.7”, nie znaczy „zadziała na 9”. Test kompatybilności: sprawdź changelog dostawcy pod kątem wersji wspierającej PS9, a potem na staging zainstaluj moduł, skonfiguruj, wykonaj jedną transakcję testową i sprawdź hooki po zmianie motywu. Opinia z forum, że „u mnie śmiga”, nie jest testem. Punkt odniesienia to dokumentacja deweloperska PrestaShop — tam widać, które API jest aktualne, a które wygaszane.

Migracja z 1.7 lub 8.x na PrestaShop 9: ścieżka, blokery i testy przed wdrożeniem

Migracja na PrestaShop 9 to nie jeden przycisk w panelu. Wybór sprowadza się do dwóch dróg, a decyzję podejmuje się po inwentaryzacji sklepu — tak wyglądają nasze wdrożenia PrestaShop w praktyce.

Ścieżka A: 1.7 → 8.x → 9 przez moduł Upgrade. Sensowna, gdy sklep jest blisko „czystego” PrestaShop: brak override'ów, moduły od aktywnych wydawców, motyw z niewielkimi zmianami. To dwa skoki, nie jeden — po 8.x robisz pełne testy i dopiero potem atakujesz 9. Zanim zaczniesz, sprawdź w dokumentacji deweloperskiej PrestaShop, jaki jest aktualny stan wsparcia modułu dla skoku 8 → 9. To zmienia się między wydaniami.

Ścieżka B: czysta instalacja 9 + eksport/import. Wybierasz ją, gdy sklep ma balast: dziesiątki plików w /override, moduły pisane pod PHP 5.6, tysiące kombinacji produktów. Przenosisz katalog, klientów, zamówienia i konfigurację, a kod bierzesz od nowa. Trwa dłużej, ale wynik jest przewidywalny.

Blokery do sprawdzenia przed startem:

Backup: dump bazy i plików, a potem test odtworzenia na osobnym hostingu. Backup, którego nie odtworzyłeś, nie jest backupem.

Testy akceptacyjne: koszyk, każda metoda płatności, e-mail z potwierdzeniem, faktura, stany magazynowe po zamówieniu i anulowaniu, feed Google Shopping, poprawność transakcji w GA4.

Widełki dla MŚP: sklep 500–3000 SKU z kilkoma modułami to zwykle 3–10 dni roboczych. Wyceniamy z liczby godzin po audycie, nie z cennika z sufitu. Cały proces opisujemy w tekście o wdrożeniu PrestaShop krok po kroku.

Hosting pod PrestaShop 9: shared, VPS czy dedyk — co wybrać przy jakiej skali

„Spełnia wymagania” i „będzie szybko działać” to dwie różne rzeczy. 256 MB na proces PHP wystarcza, żeby instalator doszedł do końca — nie wystarcza, żeby sklep z 10 tys. produktów i nocnym importem z ERP pracował bez timeoutów. Pełną listę progów PHP i MySQL znajdziesz w artykule o wymaganiach serwera PrestaShop.

Redis albo Memcached. W PrestaShop 9 cache można oprzeć na Redisie — wtedy każde wejście na kategorię i koszyk generuje mniej zapytań do bazy. Redis ma więcej możliwości, Memcached jest prostszy we wdrożeniu. Jeśli hosting shared nie daje żadnego z nich, przy większym katalogu odczujesz to na TTFB, a nie na „ładności” panelu.

CDN. Obrazy, CSS i JS zdejmujesz z serwera jednym ustawieniem DNS. To realnie skraca LCP, ale nie naprawi wolnego TTFB ani zbyt ciężkiego zdjęcia w sekcji hero. Sposób pomiaru masz w web.dev – Web Vitals.

Opieka po wdrożeniu. Monitoring dostępności co 1–5 minut, alert na błędy PHP, kopie dzienne z retencją 14–30 dni, aktualizacje bezpieczeństwa rdzenia i modułów, SLA reakcji np. 4 h w dni robocze. To pozycja w koszcie, nie dodatek — bez niej pierwszy błąd po aktualizacji modułu płatności zjadasz sam, w piątek po 17:00.

Skala sklepuRekomendacjaCzego nie odpuszczać
Do ~1000 SKU, do ~10 tys. wizyt miesięcznieShared, 512 MB RAM na proces PHPPHP 8.1+, OPcache włączony
1000–10 000 SKU, 50–100 tys. wizytVPS 4 GB RAM, 2–4 vCPURedis na cache, CDN na statyki
Powyżej 10 000 SKU, import ERP, >200 tys. wizytVPS 8 GB+ lub serwer dedykowanyRedis, CDN, baza na osobnym zasobie

Najczęstsze błędy i jak je wykryć

Zostawienie PHP 7.4 „bo sklep na tym działał”

Jak wykryć: Wpisz `php -v` w SSH albo sprawdź wersję w panelu (Domeny → PHP). Jeśli widzisz 7.4.x, instalator PrestaShop 9 wywali się na starcie bez pytania o zdanie.

Jak naprawić: Zmień wersję PHP na 8.3 w panelu hostingu, potem wyczyść cache i przetestuj sklep na kopii. Jeśli hosting nie ma PHP 8.1+, zmiana hostingu jest tańsza niż łatanie.

Brak rozszerzenia intl na hostingu współdzielonym

Jak wykryć: Instalacja zatrzymuje się w kroku 2 z komunikatem o brakującym rozszerzeniu. Potwierdź przez `php -m | grep intl` — pusty wynik oznacza problem.

Jak naprawić: Włącz intl w panelu (jeśli jest taka opcja) albo poproś support o doinstalowanie. Na tanich planach shared często nie ma jak — wtedy zostaje zmiana planu lub hostingu.

GD bez FreeType i obsługi JPEG

Jak wykryć: Miniatury produktów się nie generują albo wychodzą czarne plamy. Sprawdź `php -i | grep -i freetype` — brak wpisu oznacza, że GD jest skompilowane bez FreeType.

Jak naprawić: Zgłoś do supportu potrzebę GD z FreeType i JPEG. Jeśli hosting nie chce tego zmienić, przenieś sklep na serwer, gdzie GD jest kompletne — inaczej zdjęcia będziesz poprawiać ręcznie.

Domyślne memory_limit 128M i max_execution_time 30 s

Jak wykryć: Biała strona przy imporcie CSV, błąd 500 przy zapisie dużego produktu, przerwany backup. Sprawdź `php -i | grep -E 'memory_limit|max_execution_time'`.

Jak naprawić: Ustaw 512M i 120 s dla katalogu sklepu (nie globalnie dla całego konta). W PS9 realne zapotrzebowanie rośnie przy 5–10 tys. SKU i modułach importujących.

Baza w utf8mb3 i silniku innym niż InnoDB

Jak wykryć: Emoji w opisie produktu rozsypują się, polskie znaki w nazwach giną, a migracja wywala błędy kluczy obcych. Sprawdź `SHOW VARIABLES LIKE 'character_set_database'` oraz `SHOW ENGINES`.

Jak naprawić: Załóż bazę z utf8mb4 i collation utf8mb4_unicode_ci, tabele na InnoDB. Konwersję starych tabel rób na kopii i po backupie — to operacja jednokierunkowa.

Dump bazy robiony bez --single-transaction

Jak wykryć: Przy migracji dump trzyma lock na tabelach, sklep staje, a plik i tak wychodzi niespójny. Widać to po czasie trwania mysqldump i błędach po imporcie.

Jak naprawić: Używaj `mysqldump --single-transaction`, rób export przy niskim ruchu i zawsze weryfikuj import na środowisku testowym przed przełączeniem DNS.

Lista kontrolna do odklikania

Podsumowanie

PrestaShop 9 requirements sprowadzają się do czterech rzeczy: PHP 8.1+ (docelowo 8.3), MySQL 5.7+ lub MariaDB 10.4+, InnoDB z utf8mb4 oraz komplet rozszerzeń PHP. Minimum techniczne i minimum „przy którym sklep nie muli” to dwie różne liczby — 256M i 30 s wystarczą do startu, ale nie do pracy z większym katalogiem. Całą weryfikację zrobisz w 5 minut komendami z checklisty, najlepiej na kopii sklepu na subdomenie. Jeśli któryś punkt nie przechodzi, problem najczęściej siedzi w hostingu, nie w samym PrestaShopie.

Najczęściej zadawane pytania

Czy PrestaShop 9 ruszy na PHP 7.4?

Nie. PHP 8.1 to twarde minimum — instalator nie przejdzie dalej na 7.x, a obejścia nie mają sensu. Jeśli Twój hosting nie oferuje PHP 8.1+, najpierw sprawdź, czy nie da się przełączyć wersji w panelu. Dopiero potem rozważ zmianę planu.

Którą wersję PHP wybrać: 8.1, 8.2 czy 8.3?

Do nowego wdrożenia bierz 8.3 — jest w oficjalnej matrycy wsparcia i ma najdłuższy horyzont łatek bezpieczeństwa. PHP 8.1 działa, ale producent PHP kończy dla niego wsparcie szybciej, więc zostaje głównie dla starszych modułów. Przed zmianą sprawdź zgodność modułów na kopii sklepu, a aktualną matrycę wersji potwierdź w dokumentacji PrestaShop.

Czy hosting współdziedziony wystarczy dla PrestaShop 9?

Często tak, ale tylko gdy plan daje PHP 8.3, co najmniej 512M memory_limit, komplet rozszerzeń (intl, gd z FreeType) i bazę na InnoDB bez limitu 1 GB. Granicą jest zwykle baza i IO, nie sam PHP. Przy 5–10 tys. SKU i module importu zobaczysz to pierwsze.

MySQL 5.7 czy MariaDB — co wybrać pod PrestaShop 9?

Oba warianty są wspierane: MySQL 5.7 minimum (zalecane 8.0) i MariaDB 10.4 minimum (zalecane 10.6–10.11). W praktyce wybierz to, co hosting utrzymuje i łatkuje na bieżąco — ważniejszy jest silnik InnoDB i utf8mb4 niż logo na banerze. Unikaj wersji, które producent zostawił bez wsparcia.

Czy PHP 8.4 jest już wspierane przez PrestaShop 9?

Nie zakładaj tego z góry — nowsze wydania PHP często trafiają do oficjalnej matrycy z opóźnieniem. Przed aktualizacją sprawdź aktualną tabelę wspieranych wersji w dokumentacji deweloperskiej PrestaShop. Bezpieczniej zostać na 8.3 do czasu potwierdzenia wsparcia.

Ile pamięci RAM potrzebuje sklep na PrestaShop 9?

Minimum to 256 MB na proces PHP, ale realnie 512 MB jest bezpieczniejsze przy imporcie CSV, generowaniu miniatur i modułach raportowych. Liczy się nie RAM serwera, a limit na proces — sprawdzisz go przez php -i | grep memory_limit. Jeśli hosting daje 128M bez możliwości zmiany, szukaj innego planu.

Czy HTTPS jest wymagane, czy to tylko dobra praktyka?

To wymóg faktyczny, nie opcja. Bez TLS 1.2+ płatności online nie przejdą, cookies oznaczone jako bezpieczne nie zadziałają, a przeglądarki pokażą ostrzeżenie. Do tego HTTPS wpływa na widoczność w Google — punkt odniesienia masz w dokumentacji web.dev o Web Vitals.

Jeśli nie chcesz sprawdzać tego ręcznie, zerknij na nasze zestawienie wymagań serwera pod PrestaShop albo napisz do DropDigital — przejrzymy konfigurację Twojego hostingu i powiemy wprost, czy wystarczy pod PS9.

Źródła i materiały