Blog

Checklist per l'aggiornamento da PrestaShop 1.7 a 9: 12 passi prima di cliccare "Aggiorna"

Il team di PrestaShopAddons 82 min read





Aggiornare un negozio da PrestaShop 1.7 a 9 non si fa con un clic. Tra queste versioni PrestaShop ha alzato la versione minima di PHP, eliminato centinaia di classi del core, sostituito il tema predefinito e cambiato il modo in cui è costruito il back office. L’aggiornamento in sé di solito va liscio. A rompersi è tutto ciò che gli sta intorno: un modulo di pagamento che richiama un metodo che non esiste più, un override che smette di funzionare senza dare segni, oppure un template del tema che si aspetta variabili che PrestaShop 9 non invia più.

Questa checklist segue l’ordine in cui lavoriamo quando prepariamo un negozio per PrestaShop 9. Quasi tutto avviene prima di avviare l’aggiornamento, su una copia del negozio, così che nulla si rompa per i tuoi clienti.

Prima di iniziare: annota tre cose

Apri il back office e vai su Advanced Parameters → Information. Annota:

  1. La tua versione di PrestaShop, ad esempio 1.7.8.11 o 8.1.7.
  2. La tua versione di PHP, indicata nella stessa pagina tra le informazioni sul server.
  3. Quanti moduli non sono di PrestaShop. In Modules → Module Manager, guarda cosa hai installato tu o acquistato. Sono questi i moduli che decidono quanto sarà difficile l’aggiornamento.

Un negozio su 1.7.8 con PHP 7.4 e venti moduli di terze parti è un progetto. Un negozio su 8.2 con PHP 8.1 e cinque moduli ben mantenuti è questione di un pomeriggio.

La checklist in 12 passi

1. Fai un backup completo e una copia di staging

Esegui il backup sia dei file sia del database, e assicurati di riuscire davvero a ripristinarli. Poi crea una copia di staging del negozio sullo stesso tipo di server, idealmente su un sottodominio protetto da password. Ogni passo descritto qui sotto si esegue prima su quella copia. Il negozio online si tocca solo alla fine.

2. Controlla il server: PHP 8.1 o superiore

PrestaShop 9 richiede PHP 8.1 o superiore (la 9.0 supporta da PHP 8.1 a 8.4, la 9.1 aggiunge la 8.5; vedi i requisiti di sistema ufficiali). È l’ostacolo più comune per i negozi 1.7, perché PrestaShop 1.7 non funziona affatto su PHP 8. Chiedi al tuo hosting quali versioni di PHP offre e se puoi cambiarla per singolo sito. Controlla anche memory_limit (la documentazione ufficiale consiglia almeno 512M), max_execution_time e che le estensioni intl, zip, gd e mbstring siano attive.

3. Pianifica il percorso: 1.7 → 8 → 9

L’aggiornamento diretto da 1.7 a 9 non è supportato: l’Update Assistant ufficiale porta prima i negozi 1.7 a PrestaShop 8. Il resto del percorso dipende dai requisiti PHP. PrestaShop 1.7.8 funziona con PHP fino alla 7.4, PrestaShop 8 con PHP dalla 7.2.5 alla 8.1, e PrestaShop 9 parte da PHP 8.1. Per un negozio 1.7, quindi, il percorso sicuro di solito è:

  1. Aggiorna da 1.7.8 a 8.2 restando su PHP 7.4.
  2. Passa il server a PHP 8.1, supportato sia da PrestaShop 8 sia da 9, e fai i test.
  3. Aggiorna da 8.2 a 9.

Ogni passaggio cambia una sola cosa alla volta, così quando qualcosa si rompe sai cosa l’ha causato. Un negozio già su PrestaShop 8 può passare direttamente alla 9.

4. Elenca tutti i moduli di terze parti e verifica i loro sviluppatori

Per ogni modulo non incluso in PrestaShop, annota la versione e verifica se l’autore ha rilasciato una versione per PrestaShop 9. I moduli acquistati su PrestaShop Addons riportano le versioni supportate nella pagina prodotto. Se un modulo non viene aggiornato da anni, prevedi una di tre soluzioni: sostituirlo, farlo correggere o rimuoverlo. I moduli inutilizzati sono la vittoria più facile: disinstallali prima dell’aggiornamento e non potranno rompere nulla.

5. Analizza i moduli alla ricerca del codice rimosso da PrestaShop

Tra la 1.7.8 e la 9.0 PrestaShop ha rimosso 444 classi del core, circa 1.800 metodi, 23 costanti e 16 hook. Un modulo che ne usa anche solo uno genererà un errore fatale oppure smetterà silenziosamente di svolgere parte del suo lavoro.

Non devi cercarli a mano. Abbiamo pubblicato uno script gratuito e open source che analizza un modulo ed elenca ogni classe, metodo e hook rimosso che utilizza, con file e riga, suggerendo il sostituto per i casi più comuni. Lo trovi descritto in un verificatore gratuito di compatibilità con PrestaShop 9 per i moduli. Per controllare tutti i moduli di un negozio in una volta sola:

for m in /var/www/shop/modules/*/; do php ps9check.php "$m"; done

Un risultato tipico si presenta così:

ERROR    yourmodule.php:176
         Tools::displayPrice() was removed in PrestaShop 9.0.
         → Use $this->context->getCurrentLocale()->formatPrice($price, $this->context->currency->iso_code).

Un report breve di solito significa correzioni di una riga. Uno lungo significa che il modulo richiede un lavoro vero, ed è meglio saperlo adesso che dopo l’aggiornamento.

6. Controlla l’intervallo di compatibilità dichiarato da ogni modulo

Ogni modulo dichiara le versioni di PrestaShop che supporta in ps_versions_compliancy. Se il massimo è inferiore alla 9.0, ad esempio 'max' => '8.99.99', PrestaShop 9 si rifiuta di installarlo. Anche lo scanner lo segnala. Aumenta il valore solo dopo aver davvero testato il modulo su PrestaShop 9, altrimenti stai solo nascondendo il problema.

7. Individua i tuoi override

Gli override sono file nella cartella /override che sostituiscono parti del core di PrestaShop. Erano molto diffusi ai tempi della 1.6 e della 1.7. Quando PrestaShop rimuove o rinomina il metodo che un override sostituisce, l’override semplicemente non viene più richiamato, senza alcun messaggio di errore. La funzionalità che aggiungeva sparisce e basta.

Elenca tutto il contenuto di /override/classes e /override/controllers, scopri quale modulo o sviluppatore ha aggiunto ciascun file e verifica se il metodo sovrascritto esiste ancora in PrestaShop 9. Un test rapido: in Advanced Parameters → Performance puoi disattivare tutti gli override sulla copia di staging e vedere cosa cambia.

8. Pianifica il tema

PrestaShop 9 include un nuovo tema predefinito, Hummingbird. L’aggiornamento non cambia il tema automaticamente, quindi un negozio con Classic o con un tema acquistato lo mantiene. È una buona notizia, ma ha due conseguenze:

  • Un tema acquistato ha bisogno di una propria versione per PrestaShop 9 fornita dall’autore, esattamente come un modulo.
  • I moduli che funzionano con Classic possono comportarsi diversamente su Hummingbird, e viceversa. Hummingbird usa i CSS cascade layers e un proprio modale del carrello, che hanno rotto diverse parti del nostro modulo carrello finché non le abbiamo sistemate. Trovi i dettagli nel nostro case study sull’aggiornamento di un modulo a PrestaShop 9.

Se pensi di passare a Hummingbird in futuro, testa adesso i moduli importanti anche su questo tema, visto che stai già facendo dei test.

9. Parti dai moduli di pagamento e di spedizione

Non tutti i moduli rotti costano allo stesso modo. Un modulo blog rotto è un fastidio. Un modulo di pagamento o di spedizione rotto significa zero ordini. Testa questi per primi e con la massima attenzione, e verifica con il fornitore del servizio di pagamento che il suo modulo supporti ufficialmente PrestaShop 9. I moduli di pagamento sono anche quelli che più spesso sono stati scritti per la 1.7 e mai più toccati.

10. Esegui l’aggiornamento sulla copia di staging

Usa il modulo ufficiale di PrestaShop Update Assistant (in precedenza 1-Click Upgrade; vedi la guida ufficiale all’aggiornamento). Prima di iniziare, attiva la modalità debug sulla copia di staging (Advanced Parameters → Performance → Debug mode), così vedrai gli errori reali invece di una pagina bianca. Annota ogni errore e ogni notice. Una notice che in modalità debug sembra innocua può comunque essere il sintomo di un modulo che funziona a metà.

11. Testa il percorso che porta incassi, dall’inizio alla fine

Dopo l’aggiornamento, effettua veri ordini di prova sulla copia di staging:

  1. Naviga in una categoria e in una pagina prodotto.
  2. Aggiungi al carrello, modifica la quantità, rimuovi un prodotto.
  3. Applica un buono sconto.
  4. Completa il checkout come ospite e come cliente registrato.
  5. Paga con ogni metodo di pagamento che offri (in modalità test).
  6. Controlla l’e-mail di conferma dell’ordine e l’ordine nel back office.

Fallo da desktop e da smartphone. I problemi di carrello e checkout spesso compaiono solo su mobile, ad esempio un pulsante fisso che finisce nel posto sbagliato. Se il tuo negozio usa un carrello a scorrimento laterale o in popup, testalo esplicitamente: il carrello è la parte del negozio più strettamente legata al tema. Il nostro Block Sliding Cart è un esempio di modulo carrello che funziona già su PrestaShop 1.7, 8 e 9, sia con Classic sia con Hummingbird.

12. Pianifica la messa online e la via del ritorno

Quando lo staging funziona, ripeti l’aggiornamento sul negozio online in un momento di poco traffico, con la modalità manutenzione attiva. Decidi in anticipo cosa significa “è andato storto” e come farai il rollback: ripristinare il backup del passo 1 deve richiedere minuti, non ore. Dopo la messa online, tieni d’occhio il log degli errori e il numero di ordini per qualche giorno.

Cosa si rompe di solito

Quando abbiamo aggiornato il nostro modulo, la parte PHP ha richiesto meno modifiche del previsto. I problemi che ci hanno fatto perdere più tempo sono stati:

  • Metodi del core rimossi, come Tools::displayPrice(), che sono diventati errori fatali in sette punti.
  • Classi spostate in un nuovo namespace, come i presenter del carrello e del prodotto.
  • Il nuovo tema: un elenco del carrello trasformato in una griglia a due colonne a causa dei CSS layers, e una funzione del tema che generava un errore quando riceveva l’HTML del modulo.
  • Notice della modalità debug che sembravano innocue ma facevano fallire le pagine con controlli più rigorosi.

La storia completa, con le correzioni al codice, è in Aggiornare un modulo PrestaShop a PrestaShop 9: cosa si è rotto e come l’abbiamo risolto.

La checklist in breve

# Passo Fatto
1 Backup completo (file + database), ripristino testato, copia di staging creata ☐
2 L’hosting offre PHP 8.1+; memoria ed estensioni verificate ☐
3 Percorso di aggiornamento scelto (1.7 → 8.2 → PHP 8.1 → 9, oppure 8 → 9) ☐
4 Moduli di terze parti elencati; quelli inutilizzati rimossi ☐
5 Tutti i moduli analizzati alla ricerca di codice rimosso ☐
6 ps_versions_compliancy verificato ☐
7 Override elencati e verificati ☐
8 Il tema ha una versione per PrestaShop 9; moduli chiave testati su Hummingbird ☐
9 Moduli di pagamento e spedizione confermati per PrestaShop 9 ☐
10 Aggiornamento eseguito sullo staging con la modalità debug attiva ☐
11 Ordini di prova effettuati da desktop e da mobile ☐
12 Finestra di messa online e piano di rollback concordati ☐

Domande frequenti

Posso aggiornare direttamente da PrestaShop 1.7 a 9?

No. L’Update Assistant ufficiale porta prima i negozi 1.7 a PrestaShop 8; inoltre PrestaShop 1.7 non funziona su PHP 8, mentre PrestaShop 9 richiede PHP 8.1 o superiore. Il percorso sicuro è: da 1.7.8 a 8.2 con il PHP attuale, poi passaggio a PHP 8.1, infine aggiornamento alla 9.

I miei moduli funzioneranno su PrestaShop 9?

Quelli che l’autore ha aggiornato per PrestaShop 9 sì. I moduli più vecchi funzionano solo se non usano nessuna parte del codice rimosso da PrestaShop. Il nostro verificatore di compatibilità gratuito elenca quel codice per ogni modulo, così lo sai prima di aggiornare.

Quale versione di PHP richiede PrestaShop 9?

PHP 8.1 o superiore. Verifica quali versioni supporta il tuo hosting prima di pianificare qualsiasi altra cosa.

Devo passare al tema Hummingbird?

No. L’aggiornamento mantiene il tema attuale. Un tema acquistato ha bisogno di una versione per PrestaShop 9 fornita dal suo autore, e conviene testare i moduli importanti su Hummingbird se pensi di passarci in futuro.

Quanto dura un aggiornamento a PrestaShop 9?

L’aggiornamento in sé richiede da pochi minuti a un’ora. La preparazione richiede di più: da un pomeriggio per un negozio PrestaShop 8 con pochi moduli mantenuti, fino a diversi giorni per un negozio 1.7 con molti moduli datati e override.

Se lo scanner restituisce un report lungo

Alcuni negozi completano questa lista in un giorno. Altri scoprono che metà dei loro moduli va modificata. Se preferisci affidare a qualcun altro questa parte, è proprio il lavoro che facciamo: correzioni dei moduli per PrestaShop 9. Troviamo la causa, la correggiamo su una copia del tuo negozio e solo dopo la pubblichiamo. Inviaci il report dello scanner e ti risponderemo con alcune domande o un preventivo.