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, à l’aide de packages fournis par la communauté.
Si vous avez installé phpMyAdmin pour la gestion de la base de données, il est vivement recommandé d’attendre les packages officiels CentOS PHP 7 avant de procéder à la mise à niveau, car les packages phpMyAdmin ne prennent pas encore en charge la mise à niveau. Si vous exécutez d’autres services ou applications avec des utilisateurs actifs, il est plus sûr de commencer par tester ce processus dans un environnement intermédiaire.
Conditions préalables
Ce guide suppose que vous utilisez PHP 5.x sur CentOS 7, en utilisant soit + mod_php +
en conjonction avec Apache, soit PHP-FPM en conjonction avec Nginx. Cela suppose également que vous avez un utilisateur non root configuré avec les privilèges + sudo +
pour les tâches administratives.
Le processus d’installation de PHP 5 est documenté dans ces guides:
S’abonner au référentiel de projets de la communauté IUS
Comme PHP 7.x n’est pas encore empaqueté dans les référentiels officiels des principales distributions, nous devrons faire appel à une source tierce. Plusieurs référentiels proposent des fichiers PHP 7 RPM. Nous allons utiliser le https://ius.io [référentiel IUS].
IUS propose un script d’installation pour s’abonner à son référentiel et importer les clés GPG associées. Assurez-vous que vous êtes dans votre répertoire personnel et récupérez le script en utilisant + curl +
:
cd ~
curl 'https://setup.ius.io/' -o setup-ius.sh
Exécutez le script:
sudo bash setup-ius.sh
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 supprimer les paquets PHP existants. Appuyez sur * y * et appuyez sur * Entrée * pour continuer lorsque vous y êtes invité.
sudo yum remove php-cli mod_php php-common
Installez les nouveaux packages PHP 7 d’IUS. Encore une fois, appuyez sur * y * et * Entrée * lorsque vous y êtes invité.
sudo yum install mod_php70u php70u-cli php70u-mysqlnd
Enfin, redémarrez Apache pour charger la nouvelle version de + mod_php +
:
sudo apachectl restart
Vous pouvez vérifier le statut d’Apache, qui est géré par l’unité + httpd +
+ systemd +
, en utilisant + systemctl +
:
systemctl status httpd
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. Si vous avez déjà mis à niveau un système Apache, passez directement à la section Tests PHP.
Commencez par supprimer les paquets PHP existants. Appuyez sur * y * et appuyez sur * Entrée * pour continuer lorsque vous y êtes invité.
sudo yum remove php-fpm php-cli php-common
Installez les nouveaux packages PHP 7 d’IUS. Encore une fois, appuyez sur * y * et * Entrée * lorsque vous y êtes invité.
sudo yum install php70u-fpm-nginx php70u-cli php70u-mysqlnd
Une fois l’installation terminée, vous devrez apporter quelques modifications à la configuration de PHP-FPM et de Nginx. Comme configuré, PHP-FPM écoute les connexions sur un socket TCP local, tandis que Nginx attend un Unix domain socket, qui mappe sur un chemin du système de fichiers.
PHP-FPM peut gérer plusieurs * pools * de processus enfants. Tel que configuré, il fournit un seul pool appelé * www *, défini dans + / etc / php-fpm.d / www.conf +
. Ouvrez ce fichier avec + nano +
(ou votre éditeur de texte préféré):
sudo nano /etc/php-fpm.d/www.conf
Recherchez le bloc contenant + listen = 127.0.0.1: 9000 +
, qui indique à PHP-FPM d’écouter l’adresse de bouclage située sur le port 9000. Commentez cette ligne avec un point-virgule et décommentez + listen = / run / php-fpm / www.sock +
quelques lignes ci-dessous.
/etc/php-fpm.d/www.conf
; The address on which to accept FastCGI requests.
; Valid syntaxes are:
; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific IPv4 address on
; a specific port;
; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
; a specific port;
; 'port' - to listen on a TCP socket to all addresses
; (IPv6 and IPv4-mapped) on a specific port;
; '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = 127.0.0.1:9000
; WARNING: If you switch to a unix socket, you have to grant your webserver user
; access to that socket by setting listen.acl_users to the webserver user.
Ensuite, recherchez le bloc contenant les valeurs + listen.acl_users +
et décommentez + listen.acl_users = nginx +
:
/etc/php-fpm.d/www.conf
; When POSIX Access Control Lists are supported you can set them using
; these options, value is a comma separated list of user/group names.
; When set, listen.owner and listen.group are ignored
;listen.acl_users = apache,nginx
;listen.acl_users = apache
;listen.acl_groups =
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.
Ensuite, assurez-vous que Nginx utilise le bon chemin de socket pour gérer les fichiers PHP. Commencez par ouvrir + / etc / nginx / conf.d / default.conf +
:
sudo nano /etc/nginx/conf.d/php-fpm.conf
+ php-fpm.conf +
définit un upstream, qui peut être référencé par d’autres directives de configuration Nginx. À l’intérieur du bloc amont, utilisez un + # +
pour commenter + serveur 127.0.0.1: 9000; +
, et décommenter + serveur unix: /run/php-fpm/www.sock; +
:
/etc/nginx/conf.d/php-fpm.conf
# PHP-FPM FastCGI server
# network or unix domain socket configuration
upstream php-fpm {
server 127.0.0.1:9000;
}
Quittez et enregistrez le fichier, puis ouvrez + / etc / nginx / conf.d / default.conf +
:
sudo nano /etc/nginx/conf.d/default.conf
Recherchez un bloc commençant par + location ~ \ .php $ {+
. Dans ce bloc, recherchez la directive + fastcgi_pass
. Mettez en commentaire ou supprimez cette ligne et remplacez-la par + fastcgi_pass php-fpm +
, qui référencera l’amont défini dans + php-fpm.conf +
:
/etc/nginx/conf.d/default.conf
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_pass php-fpm;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
Quittez et enregistrez le fichier, puis redémarrez PHP-FPM et Nginx pour que les nouvelles directives de configuration prennent effet:
sudo systemctl restart php-fpm
sudo systemctl restart nginx
Vous pouvez vérifier le statut de chaque service en utilisant + systemctl +
:
systemctl status php-fpm
systemctl status nginx
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
Sortie
PHP 7.0.1 (cli) (built: Dec 18 2015 16:35:26) ( NTS )
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies
Vous pouvez également créer un fichier de test dans la racine du document du serveur Web. Bien que son emplacement dépend de la configuration de votre serveur, la racine du document est généralement définie sur l’un des répertoires suivants:
-
+ / 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 page d’informations PHP 7, qui répertorie la version et la configuration en cours. Une fois cette vérification effectuée, il est plus sûr de supprimer + info.php
:
sudo rm /var/www/html/info.php
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].