La settimana scorsa, quando è uscita la Magento 2.4.2, la prima cosa che ho fatto non è stata leggere le release notes. È stata aprire il composer.json di un progetto che seguo da anni, un merchant fashion sui 15M di GMV, e contare quante estensioni di terze parti avrei dovuto verificare una per una. La risposta era: troppe. Ed è esattamente da lì che voglio partire, perché il titolo di questa release lo conosciamo già tutti — arriva il supporto a PHP 8.0 — ma la storia vera non è nel changelog, è nel vostro stack.
Cosa cambia davvero nella 2.4.2
Partiamo dai fatti, poi vi dico cosa ne penso. La 2.4.2 è disponibile in general availability dal 9 febbraio 2021 e porta con sé quattro blocchi di novità che mi interessano.
PHP 8.0. È la notizia grossa. La 2.4.2 è la prima versione di Magento a supportare ufficialmente PHP 8.0, affiancandolo a PHP 7.4 che resta pienamente supportato. Per chi lavora sotto il cofano non è un dettaglio: PHP 8 introduce il JIT compiler, i named arguments, i constructor property promotion, gli attributes, il match expression. Sul piano delle performance il salto è reale, ma — e ci torno — è anche il punto in cui il vostro parco estensioni rischia di spaccarsi.
Composer 2. Meno rumorosa ma per me quasi altrettanto importante: la 2.4.2 aggiunge il supporto a Composer 2. Chi ha sofferto i tempi di composer update su un progetto enterprise sa di cosa parlo. Composer 2 riscrive il dependency resolver ed è drasticamente più veloce e meno affamato di memoria. È una di quelle cose che non vende una slide, ma che vi cambia la giornata in fase di build e di deploy.
Elasticsearch. La linea 2.4 ha reso Elasticsearch un requisito, non un’opzione, e la 2.4.2 estende la compatibilità alle versioni più recenti del ramo 7.x. Se state ancora ragionando come ai tempi del catalog search su MySQL, questa release è l’ennesimo promemoria che quel mondo è chiuso.
Security e GraphQL. La 2.4.2 include un pacchetto corposo di security fix — oltre trenta, tra cui vulnerabilità classificate come critical — e continua a far crescere la copertura di GraphQL, con nuove query e mutation e miglioramenti sul fronte performance. Per chi sta costruendo un front-end headless o PWA Studio, ogni release che allarga GraphQL riduce il numero di workaround custom che dovete mantenere.
PHP 8 è la vera domanda, e la risposta è: dipende dalle vostre estensioni
Ora la mia opinione, netta. Il rischio della 2.4.2 non è nel core Magento: è nelle estensioni di terze parti e nelle librerie che vi portate dietro. Il core è testato. Il vostro composer.json, no.
PHP 8.0 non è un aggiornamento minore. Ha rimosso funzioni deprecate da tempo, ha reso più severo il type juggling, ha cambiato la gestione di alcune signature. Codice che girava senza un warning su PHP 7.4 può semplicemente andare in fatal error su PHP 8.0. E il codice che vi preoccupa di più raramente è il vostro: sono i moduli comprati sul marketplace tre anni fa, il modulo del corriere che nessuno tocca da due release, la libreria pinnata a una versione vecchia perché “funzionava”.
Su quel progetto fashion di cui vi parlavo, l’inventario era chiaro: una trentina di moduli di terze parti, e per una buona metà nessuna dichiarazione esplicita di compatibilità con PHP 8. Questo non significa che siano rotti. Significa che finché non li avete testati, non lo sapete — e sperare non è una strategia di deploy.
La mia raccomandazione su tempi e testing
Ecco come la vedo, in ordine di priorità.
Aggiornate alla 2.4.2, ma su PHP 7.4. Per me questo è il percorso giusto per la maggior parte dei merchant in questo momento. Disaccoppiate le due decisioni: l’upgrade di Magento e il salto a PHP 8 sono due progetti diversi, con rischi diversi, e infilarli nello stesso deploy è il modo migliore per non capire cosa si è rotto quando qualcosa si rompe. Salite alla 2.4.2 restando su PHP 7.4, incassate i security fix e Composer 2, e mettete PHP 8 in un secondo momento pianificato.
Fate l’audit delle estensioni prima di toccare PHP. Aprite il composer.json, elencate ogni pacchetto di terze parti, e per ciascuno verificate la compatibilità dichiarata con PHP 8.0. Dove non c’è dichiarazione, apritevi un ticket verso il vendor. Questo lavoro non è glamour ma è la parte che vi salva: è qui che si decide se il vostro salto a PHP 8 durerà una settimana o un trimestre.
Testate PHP 8 in staging con dati veri. Non fidatevi di uno smoke test sulla home. I punti dove PHP 8 morde di più sono il checkout, l’import/export, i cron, le integrazioni ERP, i webhook di pagamento — cioè proprio i flussi che un test superficiale non tocca. Girate una suite di regression sui percorsi transazionali e guardate i log con display_errors alzato: PHP 8 è più rumoroso, ed è un bene, perché vi mostra problemi che 7.4 nascondeva.
Non abbiate fretta di essere i primi su PHP 8 in produzione. Lo dico controcorrente rispetto all’entusiasmo di questi giorni: il vantaggio prestazionale di PHP 8 è reale, ma non è così drammatico da giustificare un deploy affrettato su uno store che fattura. L’ecosistema di estensioni ha bisogno di qualche settimana per allinearsi. Chi ha un catalogo pulito e poche dipendenze può muoversi presto; chi ha uno stack stratificato da anni farà bene ad aggiornare il core adesso e programmare PHP 8 con calma, magari fuori dai picchi commerciali.
In sintesi: la 2.4.2 la installerei ora, PHP 8 lo pianificherei come progetto a sé, guidato da un audit delle estensioni e da un testing serio sui flussi transazionali. Il core è pronto. La domanda vera è se lo è il vostro stack — e quella risposta è nel vostro composer.json, non nelle release notes.
Domande rapide
La Magento 2.4.2 supporta PHP 8?
Sì. La 2.4.2, in general availability dal 9 febbraio 2021, è la prima versione di Magento a supportare ufficialmente PHP 8.0, mantenendo il supporto a PHP 7.4.
Devo passare subito a PHP 8 aggiornando alla 2.4.2?
No, non necessariamente. Potete aggiornare alla 2.4.2 restando su PHP 7.4 e affrontare il passaggio a PHP 8.0 come progetto separato, dopo aver verificato la compatibilità delle estensioni.
Qual è il rischio principale nel passare a PHP 8 con Magento?
Le estensioni di terze parti e le librerie non ancora compatibili con PHP 8.0: il core Magento è testato, il codice custom e i moduli acquistati spesso no.
Cos’altro introduce la 2.4.2 oltre a PHP 8?
Il supporto a Composer 2, la compatibilità con le versioni più recenti di Elasticsearch 7.x, oltre trenta security fix e nuovi miglioramenti a GraphQL.
Fabio Canovi — Da oltre dieci anni lavoro su Magento e Magento Commerce, dai primi progetti su Magento 1 fino agli stack enterprise di oggi. Sono tra i primi professionisti in Italia ad aver ottenuto la certificazione Adobe Commerce. Su questo blog racconto, dal punto di vista di chi ci mette le mani, cosa succede davvero nell’ecosistema Adobe Commerce e cosa significa per chi vende online.