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 Christian Vigh e pubblicate su PHPClasses
Il grafico è molto eloquente. La versione PHP 5.6, quella attualmente più supportata e più utilizzata, è più lenta di circa 2.5 ordini di grandezza rispetto a PHP 7, e di 3 ordini di grandezza rispetto a PHP 7.1.
Ora, analizziamo invece un'altro benchmark, ovvero una comparazione tra PHP 7.1 e PHP 7.2 effettuata da Phoronix. Come potete notare, anche qui l'incremento di prestazioni è notevole, e stiamo parlando di due release ravvicinate.
Ora, a parte tutti questi numeri, che confermano gli incrementi prestazionali usando tecniche di benchmark differenti, per la maggior parte calcoli matematici, per comprovare l'effettivo incremento prestazionale è necessario sporcarsi le mani, e provare dal vivo PHP 7.2 sul proprio server.
Dal momento che non è ancora ufficialmente supportato, PHP 7.2 necessita di installazione leggermente differente rispetto al classico "apt-get install".
Innanzitutto è necessario inserire il repository non ufficiale che contiene i pacchetti PHP 7.2. Disclaimer: queste operazioni devono essere eseguite sapendo che potete rendere instabile o non funzionante il vostro ambiente. Procedere con cautela.
Istruzioni per aggiunta repository PHP 7.2 per Ubuntu 14.04, 16.04, 17.04 e 17.10
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
Istruzioni per aggiunta repository 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à.