BlogGestione e-commerce

Update Assistant bloccato: riparare un aggiornamento a PrestaShop 9

Cache che non si svuota, servizio Symfony introvabile, processo che si ferma a metà: gli errori reali dell'Update Assistant e il metodo per passare alla CLI.

Presta Debug29 luglio 2026 5 min di lettura
Ciclo di aggiornamento spezzato e barra di avanzamento bloccata

Un aggiornamento fallito lascia il negozio in uno stato instabile

L'Update Assistant di PrestaShop è un ottimo strumento quando tutto fila liscio. Quando si ferma a metà strada, il sito resta con i file in versione 9 e il database in versione 8: il risultato sono errori 500 illeggibili. La prima regola è quindi semplice: non si avvia mai un aggiornamento senza un backup ripristinabile e già testato.

Ecco i fallimenti che incontriamo più spesso sul campo, con la loro causa e la relativa soluzione.

«Can't empty cache directory»

È l'errore più frequente nei passaggi dalla 9.0.x alla 9.1.x, in particolare con PHP 8.4.

Il modulo prova a svuotare var/cache/ e si scontra con file appartenenti a un altro utente di sistema, di solito perché alcuni comandi sono stati lanciati via SSH con un account diverso da quello del server web.

Soluzione:

rm -rf var/cache/prod var/cache/dev
chown -R www-data:www-data var/

Adatti l'utente al suo hosting. Non cancelli mai var/cache in quanto tale: soltanto il suo contenuto.

«has a dependency on a non-existent service mbo.modules.repository»

Questo errore, che restituisce un HTTP 500 durante la fase di verifica della versione, nasce da un container di dependency injection di Symfony rimasto incoerente: il modulo MBO (il marketplace integrato) risulta dichiarato, ma i suoi servizi non vengono costruiti.

Tre azioni, in quest'ordine:

  1. Aggiornare l'Update Assistant stesso prima di ogni altra cosa. Una versione datata del modulo resta la prima causa di fallimento.
  2. Eliminare il contenuto di var/cache/ e verificare che la cartella app/cache/ esista e sia scrivibile.
  3. Disattivare temporaneamente ps_mbo in ps_module, poi rilanciare.

Il processo si ferma senza alcun messaggio

Sugli hosting condivisi l'Update Assistant si scontra con tre limiti invisibili: max_execution_time, la memoria e il timeout del server web stesso. L'interfaccia mostra allora una rotellina che gira all'infinito.

La soluzione è passare dalla riga di comando, che non conosce il timeout HTTP:

php modules/autoupgrade/bin/console update:start --config-file-path=config.json

Prima verifichi che symlink() non compaia nell'elenco disable_functions della sua configurazione PHP: senza quella funzione lo scambio delle cartelle fallisce in silenzio. Porti memory_limit a -1 per la durata dell'operazione.

La trappola della ripresa manuale

Quando l'aggiornamento fallisce a metà, la tentazione è rieseguire «a mano» i file SQL di migrazione. È una trappola.

Quei file contengono direttive PHP incapsulate in commenti SQL, nella forma /* PHP:add_column(...) */. Eseguiti da phpMyAdmin, quei commenti vengono ignorati: la struttura del database sembra migrata, mentre in realtà mancano colonne e dati. I sintomi emergono settimane dopo, su una funzione usata di rado.

Se la migrazione fallisce, ripristini il backup e ricominci da capo. Non ripari mai una migrazione applicata solo a metà.

La preparazione che evita l'80% dei fallimenti

Prima di avviare qualunque cosa:

  • Salvare file e database, e provare il ripristino su un ambiente separato.
  • Disattivare tutti i moduli non nativi. Un modulo che va in crash durante la fase di aggiornamento interrompe l'intero processo. Li riattiverà uno alla volta più avanti.
  • Tornare al tema Classic per la durata dell'operazione, soprattutto se il suo tema sovrascrive template del core.
  • Controllare la versione di PHP. PrestaShop 9 richiede almeno PHP 8.1 e arriva fino alla 8.4. Un aggiornamento lanciato su PHP 7.4 fallirà immancabilmente.
  • Controllare lo spazio su disco. Il processo duplica l'intero sito: serve almeno il doppio dello spazio occupato oggi.
  • Elencare i moduli incompatibili. PrestaShop 9 ha rimosso Guzzle, League Tactician e Swift Mailer. Qualsiasi modulo che vi si appoggia produrrà un errore fatale dopo il passaggio.

Dopo l'aggiornamento: il collaudo che conta

Un aggiornamento «riuscito» è validato soltanto quando questi punti sono stati verificati:

  1. Completare un ordine dall'inizio alla fine, pagamento reale incluso.
  2. Verificare la ricezione delle email transazionali, spesso compromesse nel passaggio alla 9 per via del cambio di libreria di invio.
  3. Controllare i corrieri e i widget dei punti di ritiro nel checkout.
  4. Rigenerare le miniature e verificare la resa delle immagini prodotto.
  5. Rileggere var/logs/: gli avvisi di deprecazione di oggi sono i guasti della prossima versione.

Se il passaggio alla versione 9 la preoccupa, il nostro articolo sulla fine del supporto di PrestaShop 8 la aiuterà a scegliere il momento giusto, e la nostra pagina migrazione PrestaShop illustra il metodo che seguiamo.

Aggiornamento bloccato in questo momento?

Riprendiamo le migrazioni interrotte, anche quando il negozio è già offline. Diagnosi gratuita, risposta entro 1 ora, dalle 9 alle 22, 7 giorni su 7.