Come effettuare il rollback/downgrade di PHP 7.2 su Linux CentOS Come tornare indietro a una versione precedente di PHP (ad es. la 7.1 avendo la 7.2 installata) su un sistema Linux CentOS

How to downgrade PHP version on Linux CentOS
Per una guida su come installare PHP 7 su Linux CentOS, leggi questo articolo.

La release 7.2 di PHP ha introdotto un discreto numero di breaking changes che, a differenza della precedente versione 7.1, potrebbero provocare qualche malfunzionamento grave a diverse applicazioni non aggiornate. Tra i molti cambiamenti che la documentazione ufficiale classifica come backward-incompatible, ovvero incompatibili rispetto alle precedenti versioni, uno dei più insidiosi è il cosiddetto Warn when counting non-countable types.

Ecco cosa provoca in sintesi (testo preso dalla documentazione ufficiale di php.net):

An E_WARNING will now be emitted when attempting to count() non-countable types (this includes the sizeof() alias function).

 

[…]

 

Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d

A una prima occhiata non sembrerebbe niente di grave: un semplice warning nei casi in cui alla funzione count() – o il suo alias sizeof() – viene passato un parametro incompatibile con l’operazione di enumerabilità prevista dalla funzione stessa. Sfortunatamente, le conseguenze di questa improvvisa impossibilità di effettuare un count() di oggetti di questo tipo può provocare conseguenze significative a livello di codice. A chiunque si imbatta in questo tipo di problema non restano che due scelte: intervenire manualmente sul codice sorgente e correggere il problema, oppure effettuare un rollback di PHP a una versione precedente, come ad esempio la 7.1.

Fortunatamente, effettuare questa operazione è piuttosto semplice. Nella guida seguente spiegheremo come fare in dettaglio, dando per scontato che si stia operando su una macchina Linux CentOS 7.x con i Remi’s RPM repositories installati: in caso contrario, consigliamo di leggere questo articolo per dotarsi preventivamente dei repository necessari, oppure di adattare le istruzioni fornite ai repository alternativi utilizzati. In tutti i casi, prima di procedere, è opportuno fare un backup del file     nonché, se si utilizza il modulo php-fpm per servire le pagine PHP in modalità FastCGI, del contenuto della cartella   .

  • Aprire una finestra del Terminale.
  • Eseguire il comando    per identificare i PHP package attualmente installati sul sistema.
  • Copiare l’elenco dei package (o fare una screenshot dello schermo) per uso futuro.
  • Disinstallare i package PHP 7.2 – con tutte le relative dipendenze – con il seguente comando:
  • Installare i package PHP 7.1 – avendo cura di indicare il repository corretto – con il seguente comando:
I comandi   e   sono particolarmente importanti in questa fase, perché indica all’installer yum quale repository prendere in considerazione e quale no: in alternativa è anche possibile eliminare temporaneamente – o più semplicemente rinominare – i file corrispondenti ai repository da disabilitare.

Nell’esempio di cui sopra abbiamo dato per scontato che sulla macchina Linux CentOS siano presenti i Remi’s RPM repositories per PHP 7.1 PHP 7.2: nell’eventualità in cui non sia così, consigliamo di leggere questo articolo per acquisire le informazioni necessarie ad installarli. Ovviamente, nel caso in cui siano presenti repository diversi, tutto ciò che dovrete fare è sostituire remi-php71 con il vostro repository PHP 7.1 e remi-php72 con quello relativo a PHP 7.2.

Una volta eseguiti questi comandi, non dovremo fare altro che ripristinare i file di configurazione che avevamo archiviato in precedenza: il file   e (in caso di utilizzo di FastCGI) il contenuto della cartella   .

E’ inoltre fondamentale, in caso di utilizzo di FastCGI, ripristinare il servizio php-fpm e configurarlo nuovamente in modo che venga lanciato automaticamente all’avvio:

Una volta effettuata quest’ultima operazione, il rollback da PHP 7.2 a PHP 7.1 sarà completo!

Inutile dire che le stesse identiche operazioni possono essere effettuate per eseguire un downgrade da qualsiasi versione di PHP a qualsiasi altra, a patto di abilitare e/o disabilitare i repository corrispondenti con i comandi comandi   e   oppure rinominando adeguatamente i file ad essi relativi.

 

RELATED POSTS

About Ryan

IT Project Manager, Web Interface Architect e Lead Developer di numerosi siti e servizi web ad alto traffico in Italia e in Europa. Dal 2010 si occupa anche della progettazione di App e giochi per dispositivi Android, iOS e Mobile Phone per conto di numerose società italiane.

View all posts by Ryan