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.

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:
- Aggiornare l'Update Assistant stesso prima di ogni altra cosa. Una versione datata del modulo resta la prima causa di fallimento.
- Eliminare il contenuto di
var/cache/e verificare che la cartellaapp/cache/esista e sia scrivibile. - Disattivare temporaneamente
ps_mboinps_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:
- Completare un ordine dall'inizio alla fine, pagamento reale incluso.
- Verificare la ricezione delle email transazionali, spesso compromesse nel passaggio alla 9 per via del cambio di libreria di invio.
- Controllare i corrieri e i widget dei punti di ritiro nel checkout.
- Rigenerare le miniature e verificare la resa delle immagini prodotto.
- 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.
Leggi anche
Vulnerabilità ps_facetedsearch: l'aggiornamento PrestaShop da non rimandare
Una falla con punteggio 10 su 10 permette di prendere il controllo di un negozio con un semplice URL. Come capire se il suo è esposto e se è già stato colpito.
Leggi 30 luglio 2026PrestaShop violato: come scoprire e rimuovere uno skimmer di carte
Uno skimmer ruba i numeri di carta per settimane senza rallentare il negozio. I segnali da cercare, i comandi di diagnosi e la procedura di bonifica completa.
Leggi 28 luglio 2026PrestaShop 8 a fine supporto: conviene migrare alla 9?
Supporto esteso, PHP 8.1 come tetto, Symfony 4.4 a fine vita: i fatti che contano per scegliere fra restare, migrare o rifare, e come stimare il lavoro.
Leggi