Effettuare upgrade a PHP 7.2

Attenzione! Questo contenuto è vecchioQuesto articolo risale al 2018, quindi i contenuti e le operazioni qui consigliate potrebbero essere diventate obsolete nel corso del tempo.

Con l'avvento di PHP 7.0 il web è diventato più veloce. Molto più veloce. Oltre a tutte le facilitazioni per lo sviluppatore relative al linguaggio in senso stretto, l'incremento di prestazioni nella major release 7 di PHP è davvero notevole, ed è visibile ad occhio nudo, sia utilizzando CMS molto abusati come Wordpress sia utilizzando codice senza framework o script ad-hoc. Si capisce al primo colpo che la propria applicazione sta performando meglio.

Qui sotto riporto una immagine rappresentativa di test basati solo ed esclusivamente sul profilo computazionale delle versioni di PHP dalla 5.0.5 alla 7.1 effettuate da

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update

Istruzioni per PHP 7.2 per Debian 8 (Jessie) e 9 (Stretch)

sudo apt-get install apt-transport-https lsb-release ca-certificates
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
sudo apt-get update

Questi comandi aggiungeranno il repository PPA di Ondřej Surý's, che si occupa di mantenere i pacchetti di PHP 7.2 (oltre a moltre altre versioni) e renderlo disponibile per molte versioni di Linux.

Prima di passare alla installazione vera e propria, però, con i relativi comandi, è necessario fare un pò di attenzione preliminare.

Prima di tutto, create una lista di tutti i pacchetti aggiuntivi di PHP che avete installato sul vostro sistema, come ad esempio php-mbstring o php-curl o php-intl . Questo è necessario perchè poi dovrete reinstallare i corrispettivi in versione 7.2.

In genere, per una normale installazione LAMP, quindi PHP con Apache e Mysql, che supporti la quasi totalità dei requisiti minimi richiesti dai comuni CMS, è necessario installare questi pacchetti: libapache2-mod-php7.2 php7.2 php7.2-common php7.2-gd php7.2-mysql php7.2-imap php7.2-cli php7.2-cgi php7.2-curl php7.2-intl php7.2-pspell php7.2-recode php7.2-sqlite3 php7.2-tidy php7.2-xmlrpc php7.2-xsl php7.2-zip php7.2-mbstring php7.2-soap

Ad ogni modo, io consiglio di operare in questa maniera: dapprima disinstallare tutti i pacchetti di PHP attualmente presenti sul sistema, lasciare che apt ci dica quali pacchetti sta per disinstallare, e poi digitare manualmente la lista di pacchetti da installare andando a leggere quelli che sono stati disinstallati, usando le nuove versioni "-7.2".

Per disinstallare tutto ciò che riguarda PHP dal sistema è sufficiente digitare questo comando:

sudo apt-get remove --purge php*

Poi, analizzare i pacchetti disinstallati, ed installare tutte le rispettive versioni "7.2". Sopra ho riportato la lista di pacchetti di base che vanno bene per la maggior parte dei casi, però, è comunque necessario porre attenzione a quello che si sta facendo, in quanto questo update non è un semplice "aggiorna e dimentica" ma si tratta di un aggiornamento a pacchetti non ufficiali e che potrebbe rendere instabile o non funzionante il vostro ambiente.

sudo apt-get install libapache2-mod-php7.2 php7.2 php7.2-common php7.2-gd php7.2-mysql php7.2-imap php7.2-cli php7.2-cgi php7.2-curl php7.2-intl php7.2-pspell php7.2-recode php7.2-sqlite3 php7.2-tidy php7.2-xmlrpc php7.2-xsl php7.2-zip php7.2-mbstring php7.2-soap

Testare il vostro sistema dopo l'installazione, non solo andando ad aprire sul browser la vostra applicazione, ma andando a leggere i log di errore di PHP e Apache è un obbligo. Lì potrete capire se c'è qualche pezzo del software non compatibile con la nuova versione, o se avete dimenticato un pacchetto aggiuntivo di PHP che ne estende le funzionalità.