Molti negozi online italiani sono ancora su PrestaShop 1.6. Sono stati costruiti bene, con un tema su misura e decine di moduli, e per anni hanno fatto il loro lavoro. Oggi però girano su versioni di PHP fuori supporto da anni, i moduli di pagamento chiedono aggiornamenti che non si possono installare, e ogni intervento del fornitore dell’hosting rischia di fermare il negozio. A quel punto si pone la domanda: aggiornare PrestaShop o rifare il negozio?
In questo articolo vediamo perché PrestaShop 1.6 non può arrivare a PHP 8, quali versioni di destinazione esistono e con quale PHP funzionano, le due strade per il passaggio, cosa succede a tema e moduli, come si migrano i dati senza perdere clienti, ordini e posizionamento sui motori di ricerca, e come organizzare test e messa in produzione.
Perché PrestaShop 1.6 non può restare
Secondo la tabella di compatibilità della documentazione ufficiale, PrestaShop 1.6.1 funziona con PHP dalla 5.2 alla 7.1, con la 7.1 come versione consigliata. PHP 7.1 è fuori supporto da dicembre 2019. Il ramo 1.6 non è più mantenuto dal progetto, e il repository del modulo di aggiornamento ufficiale lo dice esplicitamente.
Il risultato è un negozio bloccato su due fronti. Non può passare a un PHP supportato, perché il core non lo regge, e non può ricevere correzioni di sicurezza per il proprio codice. Nel frattempo i servizi esterni vanno avanti: gateway di pagamento, corrieri e marketplace aggiornano le loro API e i moduli per collegarle esistono solo per le versioni recenti di PrestaShop.
Le versioni di destinazione
Dalla 1.6 si può puntare a PrestaShop 8 o a PrestaShop 9. La scelta dipende soprattutto dalla versione di PHP che si vuole raggiungere, perché ogni ramo supporta un intervallo preciso.
| PrestaShop | PHP supportato | PHP consigliato |
|---|---|---|
| 1.6.1.x | dalla 5.2 alla 7.1 | 7.1 |
| 1.7.8 | dalla 7.1 alla 7.4 | 7.4 |
| 8.0 – 8.2 | dalla 7.2 alla 8.1 | 8.1 |
| 9.0 | dalla 8.1 alla 8.4 | versioni recenti |
C’è un dettaglio da non trascurare. PrestaShop 8, uscito alla fine del 2022, supporta PHP fino alla 8.1, che ha smesso di ricevere correzioni di sicurezza alla fine del 2025. Un negozio portato su PrestaShop 8 è quindi molto più moderno di uno su 1.6, ma gira ancora su un PHP fuori supporto. PrestaShop 9, la cui prima versione stabile è uscita a giugno 2025, richiede almeno PHP 8.1 e arriva alla 8.4. Se i moduli indispensabili esistono già per la 9, conviene puntare lì; se mancano, PrestaShop 8 è una tappa valida, da accompagnare con il backport delle patch di sicurezza sul PHP 8.1 e con un piano per il passo successivo.
Due strade: aggiornamento o nuova installazione
La prima strada è l’aggiornamento sul posto con il modulo ufficiale di aggiornamento, noto come 1-Click Upgrade e oggi come Update Assistant. Il repository del modulo indica che da 1.6 a 8 o versioni successive si passa in due tappe: prima da 1.6 a 1.7 con la serie 4.14 del modulo, poi alla versione di destinazione con l’ultima versione del modulo. L’aggiornamento conserva database, URL e identificativi, ma porta con sé anche tutto ciò che si è accumulato negli anni: tabelle di moduli rimossi, override, configurazioni dimenticate.
La seconda strada è una nuova installazione pulita della versione di destinazione, nella quale si trasferiscono i dati: catalogo, clienti, ordini, pagine, immagini. La documentazione sulla migrazione descrive il procedimento come un processo di estrazione, trasformazione e caricamento: si esportano i dati dal vecchio negozio, si adattano alla struttura del nuovo database e si importano, senza modificare direttamente il database di partenza.
Nella nostra esperienza l’aggiornamento sul posto funziona bene sui negozi poco personalizzati, con pochi moduli e senza override. Per un negozio con anni di modifiche, la nuova installazione richiede più lavoro sui dati ma consegna un sistema pulito, più facile da mantenere e da portare in futuro alla versione successiva.
Prima di tutto: l’inventario del negozio
Qualunque strada si scelga, si parte da una copia completa e da un inventario. Su una copia del negozio bastano pochi comandi; il prefisso ps_ delle tabelle è quello predefinito e va adattato se diverso.
# Versione di PrestaShop (nella 1.6 è definita in config/settings.inc.php)
grep _PS_VERSION_ config/settings.inc.php
# Copia completa di database e file prima di qualunque passo
mysqldump --single-transaction -u utente -p negozio > negozio-1.6.sql
tar czf negozio-1.6-file.tar.gz --exclude=./cache --exclude=./img/tmp .
# Moduli installati, con versione e stato
mysql -u utente -p negozio -e "SELECT name, version, active FROM ps_module ORDER BY name"
# Override di classi e controller: modifiche al core da rivedere una per una
find override -name '*.php' ! -name index.php
Per ogni modulo si annota a cosa serve, chi lo ha prodotto e se esiste una versione per PrestaShop 8 o 9. Gli override nella cartella override sono modifiche dirette al comportamento del core: vanno capiti, perché le classi che modificano sono spesso cambiate nelle versioni successive.
Il tema si rifà
Con la versione 1.7 PrestaShop ha introdotto un nuovo sistema di temi, con una struttura dei template diversa e il tema Classic come base. I temi scritti per la 1.6 non sono compatibili e non si possono portare: va scelto un tema per la versione di destinazione, oppure va sviluppato un tema su misura, di solito come tema figlio di uno esistente, che PrestaShop supporta dalla 1.7.
È anche l’occasione per rivedere le personalizzazioni. Molte modifiche fatte nel tema della 1.6, come campi aggiuntivi nella pagina prodotto o blocchi in home page, oggi si ottengono con moduli standard o con la configurazione del tema. Ricostruire solo ciò che serve davvero riduce i tempi e il codice da mantenere.
I moduli: aggiornare, sostituire, riscrivere
I moduli sono la parte che richiede più valutazioni. I casi sono gli stessi che descriviamo per i CMS in generale nell’articolo su come migrare un CMS a PHP 8, con alcune particolarità di PrestaShop:
- moduli di pagamento: dalla 1.7 usano un’interfaccia diversa per presentare i metodi di pagamento al cliente, quindi i moduli della 1.6 non funzionano. Si installa la versione attuale del modulo ufficiale del servizio di pagamento;
- moduli acquistati: molti produttori offrono una versione per PrestaShop 8 o 9, a volte come prodotto separato. Va verificato prima di decidere la versione di destinazione;
- moduli su misura: vanno adattati. PrestaShop 8 richiede almeno PHP 7.2.5, usa Symfony 4.4 e ha rimosso metodi molto usati nei moduli vecchi, come
Tools::jsonEncode()eTools::jsonDecode(), elencati nella pagina delle modifiche della 8.0; - override: dove possibile si sostituiscono con gli hook, che sopravvivono meglio agli aggiornamenti.
La migrazione dei dati
Con la nuova installazione, la migrazione dei dati segue i passi indicati dalla documentazione ufficiale, a cui aggiungiamo i controlli che contano per un negozio in attività:
- installare la nuova versione senza dati dimostrativi e con le stesse lingue del vecchio negozio, verificando che gli identificativi delle lingue coincidano;
- esportare i dati dal vecchio database e confrontare la struttura delle tabelle, adattando colonne nuove, rimosse o modificate;
- importare catalogo, clienti, indirizzi, ordini, regole di prezzo e pagine CMS, mantenendo gli stessi identificativi dove possibile;
- copiare le immagini dei prodotti e i file in
img/p,downloadeupload, poi rigenerare le miniature e l’indice di ricerca; - riportare nella nuova configurazione la chiave usata per le password dei clienti, così che possano accedere con le credenziali di sempre;
- confrontare gli indirizzi delle pagine di prodotti e categorie e predisporre i reindirizzamenti permanenti per quelli cambiati.
Per migrazioni ripetute, utili per provare il procedimento più volte prima del passaggio definitivo, la documentazione indica anche il Webservice di PrestaShop, che permette di leggere le risorse da un negozio e scriverle in un altro. Esistono inoltre moduli e servizi commerciali di migrazione: vanno valutati sui dati reali, controllando in particolare ordini, combinazioni di prodotto e regole di prezzo.
Test e messa in produzione
Il nuovo negozio si prova come lo userebbe un cliente e come lo usa chi lavora gli ordini. I punti da controllare sono il catalogo con le combinazioni e i prezzi, la registrazione e l’accesso con un cliente esistente, il carrello con regole di sconto e spedizioni, ogni metodo di pagamento, le email transazionali, la numerazione di ordini e fatture, le integrazioni con gestionale e corrieri, e gli indirizzi delle pagine più visitate.
Il passaggio definitivo si fa con un’ultima migrazione dei dati recenti, ordini e clienti degli ultimi giorni, durante una breve finestra con il vecchio negozio in manutenzione, seguita dal cambio del puntamento. Il vecchio negozio resta disponibile in sola lettura per qualche settimana, come riferimento. Se vuoi valutare il tuo negozio, trovi come lavoriamo nella sezione sulla migrazione applicativa.
In sintesi
PrestaShop 1.6 funziona solo fino a PHP 7.1, fuori supporto da dicembre 2019, e il ramo non è più mantenuto. Le destinazioni sono PrestaShop 8, che arriva a PHP 8.1, già fuori supporto dalla fine del 2025, e PrestaShop 9, che copre PHP dalla 8.1 alla 8.4. Le strade sono due: l’aggiornamento sul posto con il modulo ufficiale, in due tappe passando dalla 1.7, adatto ai negozi poco personalizzati, oppure una nuova installazione con la migrazione dei dati, che consegna un sistema pulito. In entrambi i casi il tema della 1.6 va rifatto, i moduli si verificano uno per uno, con attenzione a pagamenti, moduli su misura e override, e i dati si migrano conservando identificativi, password dei clienti e indirizzi delle pagine. Test completi e una finestra di passaggio breve chiudono il lavoro.