Aujourd’hui, le serveur passe à PHP7.1 !
Ce tutoriel aborde le passage de PHP7.0 à PHP7.1 sur une Debian stable (Jessie).
L’opération prend une vingtaine de minutes, en comptant les opérations de vérifications (pre-flight checks en anglais).
La retraite PHP chez Dotdeb
Guillaume Plessis, qui maintient Dotdeb, a récemment annoncé que pour des raisons personnelles et professionnelles, Dotdeb ne fournira plus les mises à jour de PHP passé la version 7.0.
Je comprends sa décision : c’est chronophage et il faut pouvoir être en mesure de répondre aux commentaires et attentes d’une foule de personnes qui utilisent ce dépôt. Pas toujours simple. Merci Guillaume pour tout le travail accompli !
Vérification de la compatibilité PHP7.x sous WordPress
Si votre site tourne sous WordPress, il existe un plugin très utile – PHP Compatibility Checker – qui permet de vérifier que la mise à jour n’impactera pas votre site.
Je pense notamment aux plugins dont certains peuvent être assez vieillots et dont les fonctions peuvent être maintenant obsolètes.
Lancez-le avant de faire la mise à jour. S’il rapporte des warnings, ce n’est pas un problème. Si ce sont des erreurs par contre, mieux vaut y jeter un oeil avant de mettre à jour votre serveur.
Nouveau dépôt PHP : Ondrey Sury
Si l’on veut PHP7.1, il faut donc changer de dépôt et utiliser celui d’Ondrey Sury.
On installe donc ce nouveau dépôt :
apt install apt-transport-https lsb-release ca-certificates
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" >> /etc/apt/sources.list
Code language: PHP (php)
Installation de PHP7.1
On met à jour et on installe PHP7.1 :
apt update && apt upgrade
Résultat :
The following NEW packages will be installed:
libzip4 php7.1-cli php7.1-common php7.1-curl php7.1-fpm php7.1-gd php7.1-json php7.1-mbstring php7.1-mcrypt php7.1-opcache php7.1-readline php7.1-xml php7.1-xmlrpc
The following packages will be upgraded:
libssl-doc libssl1.0.2 php-common php-curl php-fpm php-gd php-mbstring php-mcrypt php-xml php-xmlrpc php7.0 php7.0-bcmath php7.0-cli php7.0-common php7.0-curl php7.0-fpm php7.0-gd php7.0-json php7.0-mbstring php7.0-mcrypt php7.0-mysql php7.0-opcache php7.0-readline php7.0-soap php7.0-xml php7.0-xmlrpc php7.0-zip
Code language: CSS (css)
On installe les paquets manquants :
php7.1-mysql php7.1-soap
Code language: CSS (css)
Paramétrage de PHP-FPM et NginX
Configuration de PHP-FPM
On édite php.ini
:
nano /etc/php/7.1/fpm/php.ini
et on modifie:
upload_max_filesize = 32M
post_max_size = 32M
On vérifie que PHP-FPM est bien configuré pour utiliser les sockets :
grep -E '^\s*listen\s*=\s*[a-zA-Z/]+' /etc/php/7.1/fpm/pool.d/www.conf
Code language: JavaScript (javascript)
Cela doit retourner la valeur suivante:
listen = /run/php/php7.1-fpm.sock
Code language: JavaScript (javascript)
Si ce n’est pas le cas, on édite la configuration de PHP-FPM :
nano /etc/php/7.1/fpm/pool.d/www.conf
et on met à jour le fichier avec les directives suivantes:
[www]
listen = /run/php/php7.1-fpm.sock
user = www-data
group = www-data
pm = dynamic
pm.max_children = 20
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 10
Code language: JavaScript (javascript)
On redémarre les services:
service php7.1-fpm restart
Code language: CSS (css)
Paramétrage de NginX
Editez le fichier de configuration de votre site, nous avons une ligne à changer pour pointer vers le bon binaire PHP :
nano /etc/nginx/sites-available/skyminds.net
On cherche la ligne fastcgi_pass
et on pointe vers php7.1-fpm.sock
:
#fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_pass unix:/run/php/php7.1-fpm.sock;
Code language: PHP (php)
A ce stade, il ne reste plus qu’à redémarrer PHP-FPM et NginX:
service php7.1-fpm restart
service nginx restart
Code language: CSS (css)
Voyons maintenant quelle est notre version de PHP:
php -v
Résultat:
PHP 7.1.3-2+0~20170315222009.20+jessie~1.gbpc7e7dd (cli) (built: Mar 15 2017 23:00:57) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.1.3-2+0~20170315222009.20+jessie~1.gbpc7e7dd, Copyright (c) 1999-2017, by Zend Technologies
Code language: CSS (css)
Nettoyage de l’ancienne version de PHP
Dernière étape : on retire tous les paquets de la version 7.0 de PHP:
apt-get purge php7.0-*
Code language: JavaScript (javascript)
Résultat :
The following packages will be REMOVED:
php7.0-bcmath* php7.0-cli* php7.0-common* php7.0-curl* php7.0-fpm*
php7.0-gd* php7.0-json* php7.0-mbstring* php7.0-mcrypt* php7.0-mysql*
php7.0-opcache* php7.0-readline* php7.0-soap* php7.0-xml* php7.0-xmlrpc*
php7.0-zip*
Code language: CSS (css)
Si vous utilisez des alias bash, n’oubliez pas de modifier le chemin du binaire PHP. De même pour les outils de monitoring.
Et voilà! Votre serveur arbore fièrement les couleurs de PHP7.1 !
Vous avez un projet WordPress ou WooCommerce en tête? Transformez votre vision en réalité avec mon expertise reconnue.
il manque un flèche supérieur dans la ligne:
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" >> /etc/apt/sources.list
au lieu d’ajouter la ligne, on écrase le contenu de sources.list
Merci Gabriel, effectivement! Je viens de corriger l’article.