Wymagania PrestaShop dla gałęzi 1.7 i 8.x różnią się na tyle, że ten sam hosting może być w pełni wystarczający dla jednej wersji, a zbyt słaby dla drugiej. Poniżej znajdziesz konkretne progi: minimalne i zalecane wersje PHP oraz MySQL, listę rozszerzeń, bez których sklep sypie błędami, i limity PHP, które w praktyce trzeba podnieść przy każdej instalacji. To część organizacyjna — pełne tabele i opisy rozszerzeń są w dalszych sekcjach. Jeśli chcesz najpierw porównać wymagania z tym, co oferuje Twój hosting, przejdź od razu do checklisty na końcu tekstu. Punktem wyjścia jest zawsze wersja sklepu, a nie odwrotnie — dobierasz PHP do PrestaShop, nigdy PHP do „przyszłej aktualizacji”.

PrestaShop 1.7 czy 8.x — które wymagania dotyczą Twojego sklepu

Zanim porównasz oferty hostingowe, ustal, na której gałęzi pracuje Twój sklep. To nie detal: PrestaShop 1.7 obsługuje PHP do wersji 7.4 i nie działa poprawnie na PHP 8.x. Próba przełączenia 1.7.8 na PHP 8.1 kończy się najczęściej białym ekranem albo błędem typu „Call to undefined function”, bo część dołączonych bibliotek nie jest zgodna z PHP 8. Gałąź 8.x to inny kontrakt: PHP 8.1 jest tu wspierane, a nowsze wydania 8.x chodzą stabilnie na PHP 8.2 i 8.3. Efekt jest wymierny — na katalogu 5–10 tys. produktów przejście z PHP 7.4 na 8.2 skraca generowanie strony kategorii o kilkadziesiąt procent, bez zmian w szablonie.

Wersję sklepu sprawdzisz w 30 sekund na dwa sposoby. Pierwszy: panel administracyjny → Parametry zaawansowane → Informacje (Advanced Parameters → Information), numer wersji jest na górze strony. Drugi: plik app/AppKernel.php, w którym zapisana jest stała VERSION. W starszych instalacjach 1.6 szukaj stałej _PS_VERSION_ w config/settings.inc.php. Przez SSH wystarczy grep -n "VERSION" app/AppKernel.php. Zakres wsparcia wersji PHP dla poszczególnych wydań trzymaj z dokumentacji deweloperskiej PrestaShop — nie z forów, gdzie cytowane są wersje sprzed pięciu lat.

Pułapka, na którą trafiamy najczęściej: hosting zmienia domyślną wersję PHP dla całego konta przy aktualizacji serwera. Sklep 1.7 na PHP 8.2 potrafi „nagle” przestać dodawać produkty do koszyka, mimo że przez rok działał bez zmian. Jeśli planujesz przejście z 1.7 na 8.x, zaplanuj je razem ze zmianą PHP i MySQL — kolejność kroków i kopie zapasowe opisujemy w przewodniku PrestaShop AutoUpgrade: aktualizacja sklepu bez awarii.

Gałąź PrestaShopMinimalna wersja PHPZalecana wersja PHP
1.7.6–1.7.8 (ostatnie wydania 1.7)7.4 (gałąź wspiera 7.1–7.4, PHP 8.x nie jest wspierane)7.4 — bez możliwości przejścia na PHP 8.x
8.0.x7.4 (oficjalny zakres od 7.2.5)8.1
8.1 i nowsze wydania 8.x8.18.2 lub 8.3

Minimalne i zalecane wymagania serwera — tabela

Tabela poniżej to jedna lista kontrolna do porównania z ofertą hostingu. Kolumna „Minimum” oznacza, że poniżej tych wartości instalacja się nie powiedzie albo będzie niestabilna — nie że sklep będzie szybki.

Trzy punkty wymagają komentarza. Pierwszy — kodowanie bazy. PrestaShop przy nowej instalacji tworzy tabele w utf8mb4, ale po imporcie dumpa ze starszej wersji collation zostaje na utf8 (3-bajtowym). Wtedy przy produkcie z emoji lub znakiem spoza podstawowego zakresu pojawia się błąd „Incorrect string value”. Sprawdź zmienną SHOW VARIABLES LIKE 'character_set_database' — powinno być utf8mb4. Drugi — przepisywanie URL. PrestaShop generuje plik .htaccess w katalogu głównym; na Apache działa od razu, na Nginx reguły musisz przenieść do konfiguracji serwera ręcznie. Bez tego panel i strona główna działają, a kategorie zwracają 404.

Trzeci — zasoby. Na 1 vCPU i 2 GB RAM mały sklep do 500 produktów pracuje spokojnie, ale import CSV z 10 tys. pozycji kończy się błędem 502. Sklep średniej wielkości z kilkoma tysiącami zamówień miesięcznie potrzebuje 2–4 vCPU i 4–8 GB RAM — tyle zajmuje baza plus cache obiektowy. Miejsce na dysku planuj z zapasem: 200 MB to samo wdrożenie, ale zdjęcia w kilku rozmiarach, eksporty i backupy zjadasz szybciej, niż się wydaje. Jak dobrać serwer pod konkretny sklep, opisujemy w sekcji PrestaShop — wdrożenia i utrzymanie sklepów.

ParametrMinimumZalecane
PHP7.4 dla 1.7 / 8.1 dla 8.x8.2 lub 8.3 (wyłącznie gałąź 8.x)
Baza danychMySQL 5.7 lub MariaDB 10.3MySQL 8.0 albo MariaDB 10.6+
Kodowanie bazyutf8mb4 jako domyślne collationutf8mb4 z collation unicode
Serwer WWWApache 2.4 (z .htaccess) lub Nginx 1.20+Apache 2.4 lub Nginx z HTTP/2
Przepisywanie URLmod_rewrite lub odpowiednik try_files w Nginxprzyjazne URL-e i przekierowania 301
ProtokółHTTP/1.1HTTP/2 (lub HTTP/3)
Dysk200 MB na wdrożeniekilka GB na zdjęcia, eksporty i backupy
CPU / RAM1 vCPU / 2 GB RAM (mały sklep)2–4 vCPU / 4–8 GB RAM (średni sklep)

Wymagane rozszerzenia PHP — co i po co

Lista rozszerzeń jest stała i taka sama dla 1.7 i 8.x. Różnica jest w hostingu: nowsze pakiety mają je domyślnie, starsze — nie. Poniżej zestawienie z objawem, po którym rozpoznasz brak.

Trzy rozszerzenia robią najwięcej szkód. intl odpowiada za formatowanie walut i dat oraz sortowanie nazw — bez niego ceny potrafią wyświetlać się jako „PLN 1,299.00” zamiast „1 299,00 zł”, a lista producentów sortuje się według kodów ASCII (Ł ląduje po Z). gd generuje miniatury: bez niego zdjęcia wgrywają się, ale katalog pokazuje puste placeholdery, a panel nie przeskaluje obrazka. zip jest potrzebny do importu i eksportu CSV w archiwum oraz do instalacji modułów z paczek .zip — bez niego import produktów z hurtowni wywala się na kroku dekompresji.

Sprawdzenie: przez SSH wpisz php -m lub php -m | grep -i intl. Bez dostępu do terminala skorzystaj z instalatora PrestaShop — pierwszy krok instalacji robi test zgodności i wypisuje brakujące rozszerzenia na czerwono, zanim cokolwiek zapisze w bazie. Osobny punkt: OPcache. Formalnie jest opcjonalny, w praktyce przy sklepie z 5 tys. produktów odpowiada za różnicę rzędu 30–50% czasu generowania strony. Włącz go w panelu hostingu (opcache.enable=1, opcache.memory_consumption min. 128 MB) i pamiętaj o czyszczeniu cache po wgraniu nowej wersji plików, inaczej zobaczysz stary kod.

Praktyczna uwaga: brak rozszerzenia to nie drobiazg konfiguracyjny. PrestaShop albo się nie zainstaluje, albo wywali błąd 500 przy pierwszym wejściu w ustawienia. Jeśli hosting nie pozwala włączyć intl, zmień hosting zamiast szukać obejść.

RozszerzenieDo czego służyCo się dzieje bez niego
curlpołączenia z API, płatnościami, kurierami, serwerem aktualizacjinie działają moduły płatności i wysyłki, błędy przy sprawdzaniu aktualizacji
gdgenerowanie miniatur i skalowanie zdjęć produktówbrak miniatur, puste placeholdery w katalogu
intlformatowanie walut i dat, sortowanie znaków narodowych„PLN 1,299.00” zamiast „1 299,00 zł”, błędne sortowanie nazw
mbstringobsługa znaków wielobajtowych, przycinanie opisówucięte polskie znaki w opisach i meta tagach, błędy walidacji formularzy
mysqli / pdo_mysqlpołączenie z bazą danychsklep nie łączy się z bazą — błąd krytyczny już przy instalacji
opensslHTTPS, szyfrowane połączenia z API i SMTPbrak wysyłki e-maili przez SMTP, ostrzeżenia przy płatnościach
zipimport i eksport CSV w archiwum, instalacja modułów z .zipimport z hurtowni pada na dekompresji, nie zainstalujesz modułu z paczki
jsonkomunikacja z API i konfiguracja modułównie działają moduły korzystające z REST API, błędy w panelu
iconvkonwersja kodowania znakówkrzaki przy imporcie plików z hurtowni w Windows-1250
simplexmlparsowanie XML — faktury, feedy, integracje kurierskienie działają integracje oparte na XML
fileinforozpoznawanie typu pliku przy uploadziezdjęcia bywają odrzucane lub fałszywie akceptowane
soapintegracje z ERP i księgowością, Webservice PrestaShopnie zadziała Webservice i część integracji z systemem ERP

Konfiguracja PHP, która realnie decyduje o działaniu sklepu

Biała strona po instalacji, „Allowed memory size exhausted” przy imporcie CSV albo produkt, który zapisuje się bez połowy kombinacji — w większości przypadków winne są limity PHP, nie kod PrestaShop. Poniżej progi, które ustawiamy na starcie każdego wdrożenia i które trzeba zweryfikować przed aktualizacją: aktualizacja wykonuje operacje na bazie trwające dłużej niż jeden request, więc zbyt niski timeout przerywa ją w połowie.

UstawienieMinimumZalecanePo co
memory_limit256M512M, a przy dużych katalogach 1Ggenerowanie miniatur, import CSV, zapis produktu z wieloma kombinacjami
max_execution_time120 s300 simport, regeneracja miniatur, aktualizacja sklepu
upload_max_filesize64M128Mwgrywanie modułów, motywów, plików CSV
post_max_size64M128M (nie mniej niż upload_max_filesize)żądanie POST z plikiem
max_input_vars500010000zapis produktu z kombinacjami, szeroki import CSV

Trzy pułapki, które widzimy najczęściej:

allow_url_fopen zostaw włączone, jeśli korzystasz z modułów płatności lub kurierskich pobierających dane z zewnętrznych URL — wyłączenie go „dla bezpieczeństwa” potrafi zablokować płatność online. open_basedir ma sens jako ograniczenie do katalogu sklepu, katalogu sesji i /tmp; jeśli zabraknie któregokolwiek z nich, dostaniesz błędy przy uploadzie plików i generowaniu PDF-ów faktur. Pełny, aktualny zestaw wymagań wersji znajdziesz w PrestaShop Developer Documentation, a kolejność prac przy aktualizacji opisujemy w materiałach o aktualizacji PrestaShop przez AutoUpgrade.

UstawienieMinimumZalecanePo co
memory_limit256M512M, przy dużych katalogach 1Ggenerowanie miniatur, import CSV, zapis produktu z kombinacjami
max_execution_time120 s300 simport, regeneracja miniatur, aktualizacja sklepu
upload_max_filesize64M128Mmoduły, motywy, pliki CSV
post_max_size64M128M (≥ upload_max_filesize)żądanie POST z plikiem
max_input_vars500010000zapis produktu z kombinacjami, szeroki import

Serwer WWW: Apache, Nginx, mod_rewrite i SSL

Friendly URL-e to pierwsze miejsce, w którym wychodzi różnica między Apache i Nginx. Plik .htaccess generowany przez PrestaShop (Shop Parameters → Traffic & SEO → Friendly URL) działa tylko na Apache i tylko wtedy, gdy katalog sklepu ma AllowOverride All. Bez tego dostajesz 404 na każdej stronie produktu i kategorii, choć strona główna działa. Ten sam efekt daje wyłączony mod_rewrite — najpierw sprawdź moduł, potem pliki.

ElementApacheNginx
Przepisywanie URLmod_rewrite + AllowOverride All, .htaccess z PrestaShopbrak .htaccess, ręczne try_files $uri $uri/ /index.php?$args;
Panel administracyjnyochrona przez .htaccess w katalogu adminaosobny location /admin/ z ograniczeniem IP i własnym limitem PHP
Cache statykówmod_expires / nagłówki w .htaccessosobne location dla obrazów, CSS i JS z expires 30d;
Blokada plików wrażliwychdeny dla .tpl, /config, /varlocation blokujące .tpl, /app/config, /var, /translations

Na Nginx konfiguracja żyje w pliku serwera, więc zmiana w panelu PrestaShop niczego nie naprawi. Po przenosinach między serwerami zawsze sprawdź koszyk, logowanie i podstronę produktu — 404 w tych miejscach to prawie zawsze brak przepisywania, a nie błąd modułu.

SSL nie jest opcją. PrestaShop 8 domyślnie ostrzega w panelu o połączeniach bez TLS, a przeglądarki blokują formularz płatności na stronie bez certyfikatu. Po włączeniu HTTPS przejrzyj opisy produktów, treści CMS i szablony maili: pojedyncze http:// łamie kłódkę i psuje zaufanie klienta.

Warstwa nagłówków to darmowe przyspieszenie: HTTP/2 zamiast HTTP/1.1 (mniejsze opóźnienia przy wielu plikach CSS i JS), kompresja gzip lub brotli dla HTML, CSS i JS oraz długi Cache-Control dla /img i /themes. Statyki PrestaShop mają w nazwach wersję lub hash, więc roczny max-age jest bezpieczny. Mechanikę nagłówków opisuje dokumentacja MDN Web Docs – HTTP. Jeśli nie chcesz diagnozować tego samodzielnie, zobacz nasze wdrożenia PrestaShop.

ElementApacheNginx
Przepisywanie URLmod_rewrite + AllowOverride All, .htaccess z PrestaShopbrak .htaccess, ręczne try_files
Panel administracyjnyochrona przez .htaccess w katalogu adminaosobny location /admin/ z ograniczeniem IP
Cache statykówmod_expires / nagłówki w .htaccesslocation dla obrazów, CSS i JS z expires
Blokada plików wrażliwych.tpl, /config, /var/app/config, /var, /translations

Hosting współdzielony vs VPS — kiedy który ma sens

Shared hosting nie jest zły sam w sobie — problem pojawia się, gdy jest niedopasowany do skali. Trzy liczby rozstrzygają u nas wybór: liczba SKU, liczba języków i szczyt ruchu, a nie średnia miesięczna. 10 000 wizyt miesięcznie to około 330 dziennie, ale jedna kampania potrafi wysłać 200 równoczesnych sesji i wtedy liczy się nie suma, a chwilowe obciążenie.

KryteriumShared wystarczaCzas na VPS
Katalogdo ~1000 produktówponad 5000 SKU
Językijedendwa i więcej
Ruchdo ~10 000 wizyt miesięczniekampanie, marketplace, wyższe szczyty
Integracjebrak lub ręczna obsługa zamówieńERP przez API, kilka sklepów, wielosklepowość
Zespółjedna osoba obsługująca sklepzespół, własne crony i Redis

Konkretne sygnały, że shared już nie działa: timeouty w panelu administracyjnym przy zapisie produktu, błąd 500 przy imporcie CSV powyżej kilkuset wierszy, BackupDb przerywany przez limit CPU w połowie procesu i rosnąca liczba błędów 502 w godzinach największego ruchu. To nie są „chwilowe problemy hostingu” — to limity konta, których nie da się negocjować.

Jak policzyć RAM na VPS: liczba równoczesnych workerów PHP-FPM × memory_limit + baza + system + cache. Przykład: 8 workerów × 512M = 4 GB, MariaDB z buforem 1,5–2 GB, system 1 GB, Redis 256 MB — wychodzi VPS z 8 GB RAM i zapasem na szczyt. Na shared tego nie policzysz, bo limity są wspólne dla wszystkich kont na serwerze.

VPS bez administracji to pułapka: trzeba mieć kogoś od aktualizacji PHP, backupu i monitoringu, inaczej oszczędność na hostingu zjada przestój sklepu. Jeśli planujesz przenosiny, zobacz, jak organizujemy wdrożenia i migracje PrestaShop dla firm — kolejność prac (kopie, staging, przełączenie DNS) ma większe znaczenie niż sam wybór serwera.

KryteriumShared wystarczaCzas na VPS
Katalogdo ~1000 produktówponad 5000 SKU
Językijedendwa i więcej
Ruchdo ~10 000 wizyt miesięczniekampanie, marketplace, wyższe szczyty
Integracjebrak lub ręczna obsługaERP przez API, kilka sklepów
Zespółjedna osobazespół, własne crony i Redis

Jak krok po kroku sprawdzić, czy Twój serwer spełnia wymagania

Ta procedura zajmuje 10–15 minut i kończy się jednoznacznym tak/nie. Kolejność jest ważna: najpierw wersje i rozszerzenia, na końcu zachowanie pod obciążeniem.

  1. Wersja PHP i lista modułów. Na VPS: php -v && php -m. Dostajesz wersję PHP i pełną listę rozszerzeń. Na hostingu współdzielonym wrzuć do katalogu plik info.php z zawartością <?php phpinfo(); ?>, otwórz w przeglądarce i skasuj po odczycie — publiczne phpinfo to wyciek konfiguracji. Sprawdź cztery wartości: wersję PHP, memory_limit, max_execution_time, opcache.enable.
  2. System check z paczki PrestaShop. Wypakuj pliki sklepu i wejdź na /install. Pierwszy krok instalatora to tabela PASS/FAIL dla każdego wymaganego rozszerzenia. Każdy FAIL blokuje instalację, ale pamiętaj: PASS oznacza tylko, że rozszerzenie istnieje, a nie że działa wydajnie.
  3. Baza danych. mysql --version albo w kliencie SQL SELECT VERSION();. Silnik tabel sprawdzisz przez SHOW ENGINES; — InnoDB musi mieć status DEFAULT lub YES. MyISAM kończy się blokadami przy równoczesnym zapisie zamówień.
  4. Realny czas odpowiedzi. ab -n 200 -c 10 https://twojadomena.pl/ (albo scenariusz k6) na stronę główną, kategorię z filtrami i kartę produktu. Interesuje Cię średni czas i 95. percentyl, nie sam wynik PASS.
  5. Testowa instalacja na subdomenie. Postaw kopię na test.twojadomena.pl z osobną bazą i przejdź ścieżkę: dodanie produktu, zamówienie, faktura PDF. Dopiero potem planuj ruchy na produkcji.

Jeśli chcesz od razu zestawić wynik z tym, co robimy w wdrożeniach PrestaShop, porównaj listę rozszerzeń z dokumentacją dla deweloperów PrestaShop — tam wymagania są aktualizowane razem z kolejnymi wydaniami.

KrokNarzędzie / komendaCo ma wyjść
Wersja PHP i modułyphp -v && php -mPHP 7.4+ dla 1.7, 8.1+ dla 8.x, rozszerzenia z listy instalatora
System check/install z paczki PrestaShopWszystkie pozycje PASS
Baza i silnikSELECT VERSION(); SHOW ENGINES;MySQL 5.7+ / MariaDB 10.3+, InnoDB = DEFAULT
Wydajnośćab -n 200 -c 10 lub k6Średnia poniżej 800 ms, zero błędów 5xx
Test instalacjisubdomena + osobna bazaPełna instalacja, logowanie do BackOffice, faktura PDF

Najczęstsze pułapki i jak je wykryć zanim wyjdzie błąd 500

Instalator pokazuje PASS, a sklep i tak sypie błędami. Poniżej pięć sytuacji, które w praktyce zdarzają się najczęściej — z objawem, przyczyną i miejscem sprawdzenia. Każdą wykryjesz w kilka minut, jeśli wiesz, gdzie patrzeć.

Punkt drugi i trzeci z tej listy najczęściej wychodzą dopiero przy aktualizacji sklepu — zanim ją odpalisz, przejrzyj PrestaShop AutoUpgrade: aktualizacja sklepu bez awarii.

ObjawPrawdopodobna przyczynaGdzie sprawdzić
403 przy zapisie produktumod_security blokuje regułęerror_log Apache, log mod_security
Błąd PDF faktury lub miniaturekopen_basedir bez /tmpphpinfo(), log PHP
Dashboard ładuje się 2–4 sbrak OPcache lub wyłączony przez hostingphpinfo() → opcache.enable
Białe okno przy zapisie produktumax_input_vars = 1000php -i | grep max_input_vars
Kursy walut się nie aktualizującron nie jest odpalanycron logi, Zaawansowane → Logi

Kiedy wymagania przestają wystarczać — sygnały do zmiany serwera

Wymagania instalacyjne mówią, czy sklep wstanie. Nie mówią, czy utrzyma ruch. Granicę przekraczasz zwykle w trzech momentach: przy 2–3 tysiącach produktów z wariantami, przy kampanii generującej kilkaset sesji równocześnie i przy integracji odpytującej API co minutę.

Monitoruj cztery liczby i reaguj, gdy dwie przekroczą próg jednocześnie — to tańsze niż kolejne poprawki na siłę.

Plan migracji zamkniesz w 2–3 dniach: stawiasz staging na docelowym serwerze, przenosisz pliki i bazę, robisz test zamówienia i faktury, przełączasz DNS z obniżonym TTL, a potem monitorujesz 48 godzin — TTFB, load average, logi błędów i realizację cronów. Dopiero po tym okresie usunięcie starego serwera.

Kiedy rozważyć Nginx + PHP-FPM zamiast Apache z mod_php: gdy na jednym vCPU widzisz load average powyżej 2 i 2000+ sesji dziennie. Apache z mod_php ładuje interpreter PHP do każdego procesu, więc RAM znika szybciej. PHP-FPM utrzymuje osobną pulę procesów, a Nginx oddaje statyki bez dotykania PHP — w typowym sklepie z 3–5 tys. produktów to 30–40% mniej pamięci na proces. Koszt to przepisanie reguł z .htaccess na bloki location, co przy sklepie z wieloma modułami zajmuje dzień lub dwa. Zanim podejmiesz decyzję, porównaj TTFB z progami opisanymi w wytycznych Google dotyczących Core Web Vitals — to metryka, która przekłada się zarówno na koszty serwera, jak i na to, jak sklep odbierają klienci. Szerszy kontekst organizacyjny znajdziesz w materiale o organizacji wdrożeń i migracji PrestaShop.

MetrykaPróg ostrzegawczyCo to w praktyce znaczy
TTFBpowyżej 600 msSerwer nie nadąża lub brak skutecznego cache
Load averagepowyżej 2 na 1 vCPUProcesy czekają w kolejce, klient widzi wolne ładowanie
Czas BackOfficepowyżej 3 s na liście produktówBrak indeksów w bazie lub wolny dysk
RAM2 GB przy 5 tys. produktów i 1000 sesjiWejście na swap i skoki TTFB w szczycie
Zużycie CPUutrzymywane powyżej 80%Zero zapasu na kampanię reklamową

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

Mieszanie wymagań PrestaShop 1.7 i 8.x w jednym podejściu — czytelnik przyjmuje jeden zestaw progów dla obu wersji.

Jak wykryć: Sprawdź wersję sklepu: panel administracyjny (Parametry zaawansowane → Informacje) albo plik app/AppKernel.php i stała _PS_VERSION_. Jeśli w dokumencie wymagań nie ma rozbicia na wersje, jest nieaktualny.

Jak naprawić: Ustal wersję sklepu jako pierwszy krok, a dopiero potem dobieraj PHP i MySQL. Dla 1.7 obowiązuje PHP 7.4 jako maksimum, dla 8.x PHP 8.1 i wyżej.

Uruchomienie sklepu z gałęzi 1.7 na PHP 8.x, bo hosting domyślnie ustawia najnowszą wersję.

Jak wykryć: Biały ekran lub komunikat typu „Uncaught Error” w logach PHP zaraz po przełączeniu wersji PHP. Panel administracyjny nie otwiera się, front też nie.

Jak naprawić: Ustaw PHP 7.4 albo zaplanuj aktualizację/migrację do 8.x na kopii sklepu. Trzymanie 1.7 z nowym PHP i liczenie, że moduły „jakoś się dostosują”, kończy się błędami w koszyku i płatnościach.

Wybór hostingu po cenie, bez sprawdzenia limitów PHP — memory_limit 128M, max_execution_time 30 s, max_input_vars 1000.

Jak wykryć: Zapisz produkt z kilkudziesięcioma kombinacjami i sprawdź, czy wszystkie atrybuty się zapisały. Albo wykonaj import CSV i zmierz, czy kończy się przed upływem 30 sekund.

Jak naprawić: Sprawdź realne wartości limitów przed zakupem (phpinfo() albo dział wsparcia z konkretnymi pytaniami) i wybierz plan, w którym można je podnieść do wartości z tabeli wymagań.

Brak rozszerzenia intl i próba tłumaczenia problemów „dziwnym zachowaniem koszyka”.

Jak wykryć: Komenda php -m | grep intl nie zwraca nic. Objawy: błędne formatowanie walut i dat, źle sortowane znaki diakrytyczne w listach produktów.

Jak naprawić: Doinstaluj pakiet php-intl i zrestartuj PHP-FPM. Po zmianie wyczyść cache PrestaShop, bo przetłumaczone formaty siedzą w cache.

Założenie, że przyjazne adresy URL „działają same”, bez mod_rewrite lub z AllowOverride None.

Jak wykryć: Po włączeniu przyjaznych URL w panelu klik w produkt zwraca 404 przy poprawnie działającej stronie głównej. Na Nginx brak pliku .htaccess nie generuje błędu, ale linki też nie działają.

Jak naprawić: Apache: włącz mod_rewrite i ustaw AllowOverride All dla katalogu sklepu, pozostawiając .htaccess generowany przez PrestaShop. Nginx: dodaj ręczny blok try_files oraz obsługę katalogu panelu administracyjnego, bo Nginx nie czyta .htaccess.

Brak wymuszonego HTTPS i zostawienie sklepu dostępnego po HTTP „na czas testów”.

Jak wykryć: Otwórz sklep po http:// i sprawdź, czy następuje przekierowanie. PrestaShop 8 ostrzega w panelu o połączeniach bez TLS.

Jak naprawić: Zainstaluj certyfikat SSL, ustaw przekierowanie 301 z HTTP na HTTPS i popraw adresy w konfiguracji sklepu. Do tego nagłówki HTTP/2 oraz kompresja gzip/brotli i cache-control dla /img i /themes.

Lista kontrolna do odklikania

Podsumowanie

Wymagania PrestaShop zależą przede wszystkim od wersji sklepu: 1.7 kończy się na PHP 7.4, a 8.x startuje od PHP 8.1. Samo PHP to za mało — równie często o awarii decydują brakujące rozszerzenia (intl, gd, zip) i zbyt niskie limity memory_limit, max_input_vars oraz max_execution_time. Zacznij od checklisty, porównaj wynik z ofertą hostingu i dopiero potem rozmawiaj o przenosinach lub aktualizacji. Kolejność jest zawsze ta sama: wersja sklepu, potem środowisko.

Najczęściej zadawane pytania

Jaką wersję PHP wybrać do PrestaShop 1.7?

PrestaShop 1.7 pracuje na PHP 7.4 i to jest górna granica tej gałęzi. PHP 8.x nie jest w 1.7 obsługiwane, więc przełączenie hostingu na nowszą wersję zwykle kończy się błędami krytycznymi, a nie drobnymi ostrzeżeniami. Jeśli hosting wymusza PHP 8, realnym rozwiązaniem jest migracja do PrestaShop 8.x, a nie szukanie obejść.

Czy PrestaShop 8 działa na PHP 8.2 i 8.3?

PrestaShop 8 wymaga PHP 8.1 jako minimum, a nowsze wersje z tej gałęzi rozszerzają wsparcie na PHP 8.2 i 8.3. Kluczowe zastrzeżenie: zgodność samego rdzenia nie oznacza zgodności Twoich modułów i motywu. Przed przełączeniem produkcyjnego sklepu sprawdź tabelę zgodności dla swojej konkretnej wersji w dokumentacji dla deweloperów PrestaShop i przetestuj koszyk oraz płatności na kopii.

Ile RAM i CPU potrzebuje sklep na PrestaShop?

Dla małego sklepu, z kilkuset produktami i ruchem do kilku tysięcy wizyt miesięcznie, wystarcza 1 vCPU i 2 GB RAM. Dla średniego sklepu, z importami, kilkoma językami i ruchem generującym obciążenie bazy, sensowny punkt startu to 2–4 vCPU i 4–8 GB RAM. Pamięć nie służy samemu PHP — liczy się też baza danych i cache.

Co konkretnie psuje się bez rozszerzenia intl?

Bez intl PrestaShop nie formatuje poprawnie walut ani dat, a sortowanie tekstów z polskimi znakami diakrytycznymi wypada błędnie. Objawy bywają mylące, bo sklep działa i tylko „dziwnie” prezentuje ceny lub kolejność produktów. Sprawdzenie jest jedno: php -m i obecność wpisu intl na liście.

Dlaczego linki SEO zwracają 404 po włączeniu przyjaznych URL?

Najczęstsza przyczyna to warstwa web, nie PrestaShop. Na Apache brakuje włączonego mod_rewrite albo katalog sklepu ma AllowOverride None, więc plik .htaccess nie jest czytany. Na Nginx problem jest inny — Nginx nie obsługuje .htaccess w ogóle i wymaga ręcznego bloku try_files oraz osobnej reguły dla katalogu panelu administracyjnego. Szczegóły konfiguracji nagłówków i przekierowań opisuje dokumentacja HTTP w MDN.

Czy hosting współdzielony wystarczy do PrestaShop?

Tak, dla małego sklepu z ograniczoną liczbą produktów i modułów — pod warunkiem, że można podnieść memory_limit, max_execution_time i max_input_vars. Problem pojawia się przy dużych katalogach, częstych importach i wielu równoczesnych sesjach: wtedy limity współdzielonego planu stają się wąskim gardłem i przejście na VPS jest tańsze niż walka z timeoutami.

Czy OPcache jest wymagany?

Formalnie nie — PrestaShop nie odmówi instalacji bez OPcache. W praktyce to jedno z najprostszych ustawień poprawiających czas odpowiedzi, bo eliminuje wielokrotne kompilowanie tych samych plików PHP. Na produkcji włącz OPcache i zweryfikuj, że po wdrożeniu zmian cache jest prawidłowo czyszczony.

Jeśli chcesz, żebyśmy sprawdzili, czy Twój obecny hosting udźwignie planowany rozwój sklepu — napisz do nas, przejrzymy konfigurację i powiemy wprost, co wymaga zmiany. Zaczynamy od wdrożeń i opieki nad PrestaShop.

Źródła i materiały