L’aggiornamento PHP prevede una serie di operazioni da svolgere con cura per evitare di compromettere il funzionamento del sistema. La cosa migliore da fare sarebbe quella di eseguire un backup del sistema. Seguiamo questi semplici passi.
a. verifichiamo la versione PHP installata.
php -v
nel mio caso ho trovato la versione 7.0.33
PHP 7.0.33-0ubuntu0.16.04.14 (cli) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.0.33-0ubuntu0.16.04.14, Copyright (c) 1999-2017, by Zend Technologies
b. individuiamo i file di configurazione utilizzati da PHP con il comando
php --ini
il risultato sarà simile a questo
Configuration File (php.ini) Path: /etc/php/7.0/cli
Loaded Configuration File: /etc/php/7.0/cli/php.ini
Scan for additional .ini files in: /etc/php/7.0/cli/conf.d
Additional .ini files parsed: /etc/php/7.0/cli/conf.d/10-mysqlnd.ini,
/etc/php/7.0/cli/conf.d/10-opcache.ini,
/etc/php/7.0/cli/conf.d/10-pdo.ini,
/etc/php/7.0/cli/conf.d/15-xml.ini,
/etc/php/7.0/cli/conf.d/20-calendar.ini,
/etc/php/7.0/cli/conf.d/20-ctype.ini,
/etc/php/7.0/cli/conf.d/20-curl.ini,
/etc/php/7.0/cli/conf.d/20-dom.ini,
/etc/php/7.0/cli/conf.d/20-exif.ini,
/etc/php/7.0/cli/conf.d/20-fileinfo.ini,
/etc/php/7.0/cli/conf.d/20-ftp.ini,
/etc/php/7.0/cli/conf.d/20-gd.ini,
/etc/php/7.0/cli/conf.d/20-gettext.ini,
/etc/php/7.0/cli/conf.d/20-iconv.ini,
/etc/php/7.0/cli/conf.d/20-intl.ini,
/etc/php/7.0/cli/conf.d/20-json.ini,
/etc/php/7.0/cli/conf.d/20-mbstring.ini,
/etc/php/7.0/cli/conf.d/20-mcrypt.ini,
/etc/php/7.0/cli/conf.d/20-mysqli.ini,
/etc/php/7.0/cli/conf.d/20-pdo_mysql.ini,
/etc/php/7.0/cli/conf.d/20-phar.ini,
/etc/php/7.0/cli/conf.d/20-posix.ini,
/etc/php/7.0/cli/conf.d/20-readline.ini,
/etc/php/7.0/cli/conf.d/20-shmop.ini,
/etc/php/7.0/cli/conf.d/20-simplexml.ini,
/etc/php/7.0/cli/conf.d/20-sockets.ini,
/etc/php/7.0/cli/conf.d/20-sysvmsg.ini,
/etc/php/7.0/cli/conf.d/20-sysvsem.ini,
/etc/php/7.0/cli/conf.d/20-sysvshm.ini,
/etc/php/7.0/cli/conf.d/20-tokenizer.ini,
/etc/php/7.0/cli/conf.d/20-wddx.ini,
/etc/php/7.0/cli/conf.d/20-xmlreader.ini,
/etc/php/7.0/cli/conf.d/20-xmlwriter.ini,
/etc/php/7.0/cli/conf.d/20-xsl.ini
nel quale è possibile vedere la cartella /etc/php/7.0/ in cui è installato PHP.
.. salviamo queste informazioni nel file php-ini.log tramite il comando
php --ini > php-ini.log
.. verifichiamo e salviamo l’elenco dei moduli PHP installati tramite
php -m
e salviamone il contenuto nel file php-modules.log tramite
php -m > php-modules.log
.. facciamo una copia della cartella PHP /etc/php/7.0/ attualmente in uso
sudo cp -a /etc/php/7.0/ /etc/php/7.0.old
Aggiungiamo nel repository per la versione ufficiale di PHP 7.2 tramite
sudo add-apt-repository ppa:ondrej/php
Nel caso in cui PHP sia utilizzato con Apache2 si dovrà aggiungere anche
sudo add-apt-repository ppa:ondrej/apache2
Verifichiamo l’elenco del software dai repositories e installiamo la nuova versione di PHP
sudo apt-get update
Se durante l’aggiornamento dovesse verificarsi un errore tipo perl: warning: Setting locale failed. leggi su questo articolo come risolverlo.
Ora si può procedere con l’installazione di PHP 7.2
sudo apt-get install php7.2
Una volta completata l’installazione si può verificare che la versione PHP si sia aggiornata tramite il comando
php -v
che riporterà la versione installata, che nel mio caso è PHP 7.2.31
PHP 7.2.31-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: May 14 2020 08:27:14) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.31-1+ubuntu16.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies
A questo punto si può verificare se i moduli PHP aggiornati sono stati installati all’interno di Apache tramite
ls -1 /etc/apache2/mods-available/php*
che mostrerà un risultato simile al seguente
/etc/apache2/mods-available/php7.0.conf
/etc/apache2/mods-available/php7.0.load
/etc/apache2/mods-available/php7.2.conf
/etc/apache2/mods-available/php7.2.load
A questo punto si potrà procedere a disabilitare la versione di PHP precedente e abilitare PHP appena installato.
Per disattivare la versione PHP 7.0 si dovrà utilizzare
a2dismod php7.0
che mostrerà il messaggio
Module php7.0 disabled.
To activate the new configuration, you need to run:
service apache2 restart
Anche se è indicato di fare il riavvio di Apache per rendere esecutiva la modifica, in questo momento possiamo evitare. Faremo un riavvio al termine dell’installazione della nuova versione.
L’abilitazione del nuovo PHP dovrà essere eseguito tramite il comando
a2enmod php7.2
che riporterà il messaggio
Enabling module php7.2.
To activate the new configuration, you need to run:
service apache2 restart
Verifichiamo che Apache abbiamo abilitato i moduli PHP aggiornati tramite il comando
ls -1 /etc/apache2/mods-enabled/php*
/etc/apache2/mods-enabled/php7.2.conf
/etc/apache2/mods-enabled/php7.2.load
Visto che i moduli sono presenti nel percorso di Apache /etc/apache2/mods-enabled/ possiamo procedere con il riavvio del servizio Apache tramite il comando
apachectl restart
Operazione conclusa!
Verifichiamo che tutto funzioni correttamente e se dovesse presentarsi qualche problema in fase di esecuzione delle pagine PHP possiamo sempre consultare i file php-ini.log e php-modules.log e la cartella /etc/php/7.0.old creati prima di iniziare l’aggiornamento.