Ultimamente ho dovuto aggiornare alcuni siti in Magento dalla versione 1.5 alla versione 1.7

L’operazione non è stata proprio indolore, ed ecco il perché di questo articolo.

Premettiamo subito che per quanto riguarda il template, se questo non è stato scritto con i piedi, non dovrebbe creare problemi. La visualizzazione del front-end dovrebbe essere corretta.

Purtroppo più di una volta mi è però capitato di avere a che fare con templates già pronti, acquistati magari da questi siti fabbriche di templates che clonano il base template (magari vecchio, ad es. della 1.3 o 1.4) rinominandolo e cambiando qui e la giusto qui 2/3 files per i quali bastava un semplicissimo override degli stessi e un buon local.xml

Quindi, nel caso in cui utilizzate un prodotto simile, aspettatevi qualche problema.

Sarebbe preferibile effettuare l’aggiornamento di Magento da shell, esiste un ottimo tool che permette questa e tante altre operazioni, ma il mio hosting provider non mi abilita i permessi di esecuzione dello script per ragioni di sicurezza, quindi sono stato costretto ad effettuare l’aggiornamento dal Magento Connect Manager.

Questo rende l’operazione più lenta e tortuosa anche se tuttavia non impossibile.

Il primo problema che ho riscontrato, aggiornando dalla 1.5.0.1 alla 1.7 è stato il classico errore di overwrite, una serie di pacchetti risultavano già esistenti e quindi non potevano essere sovrascritti.

Per ovviare a questo problema bisogna modificare parte dello script del downloader.

Aprite il file downloader/lib/Mage/Connect/Validator.php 

e commentate questa riga di codice

 In questo modo, modificherete il validatore del connect manager facendo sovrascrivere i files dei moduli esistenti.
Passiamo quindi al database.
Per evitare errori di integrità, velocizzare la procedura e alleggerire il database, ho svuotato le tabelle dei logs, rispettivamente
  • log_url
  • log_url_info
  • log_visitor
  • log_visitor_info
  • report_event
  • report_viewed_product_info
  • index_process_event

Fatto ciò ho cominciato l’aggiornamento, semplicemente inserendo la classica stringa del pacchetto Mage_All_Latest http://connect20.magentocommerce.com/community/Mage_All_Latest e cliccando installa. Qui sono sorti altri problemi.

Mi è capitato con la versione 1.5.1 che il connect manager dava svariati errori di dipendenze  date dal pacchetto Mage_Core_Modules. Ancora più  a monte era il find_feed a dare problemi. La soluzione l’ho trovata aggiornando alle ultime versioni solo i rispettivi due pacchetti, prima il find_feed e poi il Mage_Core_Modules e quindi aggiornando tutto il resto attraverso Mage_All_Latest.

Una volta completata la procedura, il connect manager dava ripetutamente errori nella pulizia della cache e della directory session. Semplicemente ho riaggiornato la pagina e ho svuotato manualmente le directory var/session e var/cache.

Visto comunque che per il connect manager la procedura è rimasta in sospeso, andando ad aprire il fronted del sito noterete con piacere :) che il sito ritorna l’errore 503! Questo perché, quando il connect manager lavora, mette in manutenzione magento creando il file maintenance.flag nella root della vostra installazione Magento. Per togliere la modalità manutenzione quindi semplicemente cancellate il file maintenance.flag.

Riaggiornate quindi nuovamente l’homepage del vostro sito e dopo un lungo caricamento (di fatto Magento sta installando ora tutti gli aggiornamenti, apportando le dovute modifiche alle tabelle del database) probabilmente otterrete una pagina di errore.

Se la fortuna vi assiste, facendo ricaricare la index del vistro sito dovrebbe andare tutto per il meglio e vedere finalmente di nuovo bello e funzionante il vostro negozio online, altrimenti andatevi a cercare il file dell’errore nella directory var oppure fatelo stampare a video, rinominando il file local.xml.sample in local.xml contenuto nella directory errors della vostra root di Magento.

 

[info ]In questo articolo spiego come effettuare l’aggiornamento tramite shell/ssh aggiornare magento da shell [/info]