Comment passer à PHP 7 sur Ubuntu 14.04

introduction

PHP 7, publié le 3 décembre 2015, promet des améliorations substantielles de la vitesse par rapport aux versions précédentes du langage, ainsi que de nouvelles fonctionnalités telles que l’indication de type scalaire. Ce guide explique comment mettre à niveau rapidement un serveur Web Apache ou Nginx exécutant PHP 5.x (toute version) vers PHP 7.

Conditions préalables

Ce guide suppose que vous exécutez PHP 5.x sur une machine Ubuntu 14.04 en utilisant soit + mod_php + conjointement à Apache, soit PHP-FPM conjointement à Nginx. Cela suppose également que vous avez un utilisateur non root configuré avec les privilèges `+ sudo + pour les tâches administratives.

Ajouter un PPA pour les packages PHP 7.0

A * Personal Package Archive *, ou PPA, est un référentiel Apt hébergé sur Launchpad. Les PPA permettent aux développeurs tiers de créer et de distribuer des paquets pour Ubuntu en dehors des canaux officiels. Ce sont souvent des sources utiles de logiciels bêta, de versions modifiées et de backports vers des versions plus anciennes du système d’exploitation.

Ondřej Surý gère les paquets PHP pour Debian et propose a PPA pour PHP 7.0 sur Ubuntu. Avant toute chose, connectez-vous à votre système et ajoutez le PPA d’Ondřej aux sources Apt du système:

sudo add-apt-repository ppa:ondrej/php

Vous verrez une description du PPA, suivie d’une invite pour continuer. Appuyez sur * Entrée * pour continuer.

Une fois le PPA installé, mettez à jour le cache de paquet local pour inclure son contenu:

sudo apt-get update

Maintenant que nous avons accès aux packages pour PHP 7.0, nous pouvons remplacer l’installation PHP existante.

Mettre à jour + mod_php + avec Apache

Cette section décrit le processus de mise à niveau pour un système utilisant Apache en tant que serveur Web et + mod_php + pour exécuter du code PHP. Si vous utilisez plutôt Nginx et PHP-FPM, passez à la section suivante.

Commencez par installer les nouveaux packages. Cela mettra à jour tous les paquets PHP importants, à l’exception de + php5-mysql, qui seront supprimés.

sudo apt-get install php7.0

Si vous utilisez MySQL, veillez à rajouter les liaisons PHP MySQL mises à jour:

sudo apt-get install php7.0-mysql

Mise à niveau de PHP-FPM avec Nginx

Cette section décrit le processus de mise à niveau pour un système utilisant Nginx en tant que serveur Web et PHP-FPM pour exécuter du code PHP.

Commencez par installer le nouveau paquet PHP-FPM et ses dépendances:

sudo apt-get install php7.0-fpm

Vous serez invité à continuer. Appuyez sur * Entrée * pour terminer l’installation.

Si vous utilisez MySQL, veillez à réinstaller les liaisons PHP MySQL:

sudo apt-get install php7.0-mysql

Mise à jour du ou des sites Nginx pour utiliser le nouveau chemin d’accès au socket

Nginx communique avec PHP-FPM en utilisant un socket de domaine Unix. Les sockets correspondent à un chemin du système de fichiers, et notre installation de PHP 7 utilise un nouveau chemin par défaut:

PHP 5 PHP 7

/var/run/php5-fpm.sock

/var/run/php/php7.0-fpm.sock

Ouvrez le fichier de configuration du site + default + avec + nano + (ou votre éditeur de choix):

sudo nano /etc/nginx/sites-enabled/default

Votre configuration peut différer quelque peu. Recherchez un bloc commençant par + location ~ \ .php $ {+ et une ligne ressemblant à + ​​fastcgi_pass unix: /var/run/php5-fpm.sock; +. Changez ceci pour utiliser + unix: / var / run / php / php7.0-fpm.sock +.

/ etc / nginx / sites-enabled / default

server {
   listen 80 default_server;
   listen [::]:80 default_server ipv6only=on;

   root /var/www/html;
   index index.php index.html index.htm;

   server_name ;

   location / {
       try_files $uri $uri/ =404;
   }

   error_page 404 /404.html;
   error_page 500 502 503 504 /50x.html;
   location = /50x.html {
       root /usr/share/nginx/html;
   }

   location ~ \.php$ {
       try_files $uri =404;
       fastcgi_split_path_info ^(.+\.php)(/.+)$;

       fastcgi_index index.php;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       include fastcgi_params;
   }
}

Quittez et enregistrez le fichier. Dans + nano +, vous pouvez y parvenir en appuyant sur * Ctrl-X * pour quitter, * y * pour confirmer et * Entrée * pour confirmer le nom du fichier à écraser.

Vous devez répéter cette procédure pour tous les autres sites virtuels définis dans + / etc / nginx / sites-enabled + qui doivent prendre en charge PHP.

Maintenant nous pouvons redémarrer + nginx:

sudo service nginx restart

Tester PHP

Avec un serveur Web configuré et les nouveaux packages installés, nous devrions être en mesure de vérifier que PHP est opérationnel. Commencez par vérifier la version de PHP installée sur la ligne de commande:

php -v
OutputPHP 7.0.0-5+deb.sury.org~trusty+1 (cli) ( NTS )
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies
   with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2015, by Zend Technologies

Vous pouvez également créer un fichier de test dans la racine du document du serveur Web. Selon votre serveur et votre configuration, il peut s’agir de:

  • + / var / www / html

  • + / var / www / +

  • + / usr / share / nginx / html

En utilisant + nano +, ouvrez un nouveau fichier nommé + info.php + dans la racine du document. Par défaut, sur Apache, ce serait:

sudo nano /var/www/html/info.php

Sur Nginx, vous pourriez plutôt utiliser:

sudo nano /usr/share/nginx/html/info.php

Collez le code suivant:

info.php

<?php
phpinfo();
?>

Quittez l’éditeur en sauvegardant + info.php. Maintenant, chargez l’adresse suivante dans votre navigateur:

http:///info.php

Vous devriez voir la version de PHP et les informations de configuration pour PHP 7. Une fois que vous avez vérifié cette information, il est préférable de supprimer + info.php:

sudo rm /var/www/html/info.php

Conclusion

Vous avez maintenant une installation de PHP 7 qui fonctionne. À partir de là, vous pouvez consulter le blog de Erika Heidi sur Getting Ready for PHP 7 et examiner le https : //secure.php.net/manual/fr/migration70.php [guide officiel de la migration].