Un article sur comment installer facilement PHP 5 par PHP 7 sur Debian Jessie, installé avec le serveur web Nginx.
A ce jour, PHP 7 n’est pas dans les dépôts officiels de Debian et pour éviter la compilation à chaque mise à jour de PHP, il est préférable de passer par les dépôts mis à disposition et maintenue par Guillaume Plessis.
Attention, l’installation et la configuration a été validée pour un hébergement d’un site WordPress. Je ne suis pas développeur, il se peut que PHP 7 ne soit pas compatible avec vos applications.
Installer PHP 7 sur Debian
nb : toutes les commandes décrites dans le tutoriel sont exécutées en tant que root.
nb 2 : L’installation et les configurations expliquées pour Debian Jessie et Sid (nom de code : Stretch).
- Ajout des dépôts dotdeb :
echo "deb http://packages.dotdeb.org jessie all" > /etc/apt/sources.list.d/dotdeb.list
wget https://www.dotdeb.org/dotdeb.gpg && apt-key add dotdeb.gpg
apt update
Debian Jessie :
apt-cache policy php7.0
Debian Sid :
apt policy php7.0
php7.0: Installed: (none) Candidate: 7.0.0-5~dotdeb+8.1 Version table: 7.0.0-5~dotdeb+8.1 500 500 http://packages.dotdeb.org jessie/all amd64 Packages 7.0.0-1~dotdeb+8.1 500 500 http://packages.dotdeb.org jessie/all amd64 Packages
Debian Jessie :
apt-get --purge remove php5*
Debian Sid :
apt purge php5*
(Il y a peut être plus propre et moins barbare)
exemple dans mon cas :
The following packages were automatically installed and are no longer required: dh-php5 libqdbm14 shtool Use 'apt autoremove' to remove them. The following packages will be REMOVED: php-pear* php5-cli* php5-common* php5-dev* php5-geoip* php5-json* php5-readline* pkg-php-tools* 0 upgraded, 0 newly installed, 8 to remove and 64 not upgraded. After this operation, 16.5 MB disk space will be freed. Do you want to continue? [Y/n]
Debian Jessie :
apt-get autoremove
Debian Sid :
apt autoremove
exemple dans mon cas :
Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be REMOVED: dh-php5 libqdbm14 shtool 0 upgraded, 0 newly installed, 3 to remove and 64 not upgraded. After this operation, 892 kB disk space will be freed. Do you want to continue? [Y/n]
apt install php7.0
Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: apache2 apache2-bin apache2-data apache2-utils aspell aspell-en dictionaries-common emacsen-common enchant hunspell-en-us libapache2-mod-php7.0 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libaspell15 libenchant1c2a libhunspell-1.3-0 liblua5.1-0 libqdbm14 php-common php7.0-cli php7.0-common php7.0-json php7.0-opcache ssl-cert Suggested packages: www-browser apache2-doc apache2-suexec-pristine | apache2-suexec-custom aspell-doc spellutils wordlist hunspell openoffice.org-hunspell | openoffice.org-core php-pear libenchant-voikko php-user-cache openssl-blacklist Recommended packages: php-readline The following NEW packages will be installed: apache2 apache2-bin apache2-data apache2-utils aspell aspell-en dictionaries-common emacsen-common enchant hunspell-en-us libapache2-mod-php7.0 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libaspell15 libenchant1c2a libhunspell-1.3-0 liblua5.1-0 libqdbm14 php-common php7.0 php7.0-cli php7.0-common php7.0-json php7.0-opcache ssl-cert 0 upgraded, 27 newly installed, 0 to remove and 64 not upgraded. Need to get 9208 kB of archives. After this operation, 37.2 MB of additional disk space will be used. Do you want to continue? [Y/n]
Cependant, je ne veux pas installer tous les paquets liés à Apache2 ! voici une petite astuce qui permet de dire à Apt de n’installer que php7 :
apt install php7.0-fpm php7.0
ce qui donne :
Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: aspell aspell-en dictionaries-common emacsen-common enchant hunspell-en-us libaspell15 libenchant1c2a libhunspell-1.3-0 libqdbm14 php-common php7.0-cli php7.0-common php7.0-json php7.0-opcache Suggested packages: aspell-doc spellutils wordlist hunspell openoffice.org-hunspell | openoffice.org-core libenchant-voikko php-pear php-user-cache Recommended packages: php-readline The following NEW packages will be installed: aspell aspell-en dictionaries-common emacsen-common enchant hunspell-en-us libaspell15 libenchant1c2a libhunspell-1.3-0 libqdbm14 php-common php7.0 php7.0-cli php7.0-common php7.0-fpm php7.0-json php7.0-opcache 0 upgraded, 17 newly installed, 0 to remove and 64 not upgraded. Need to get 7188 kB of archives. After this operation, 29.7 MB of additional disk space will be used. Do you want to continue? [Y/n]
Avec cette technique Apache2 ne fait plus partie des dépendances \o/
php -v
PHP 7.0.0-5~dotdeb+8.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
apt install php7.0-mysql
Configurer php7.0-fpm
A ce stade, php7.0-fpm n’est pas configuré pour être opérationnel et il se peut qu’ion se retrouve avec l’erreur 502 Bad Gateway dans le navigateur.
- Modification de php.ini :
nano /etc/php/7.0/fpm/php.ini
Modifier la ligne 768 :
cgi.fix_pathinfo=0
nano /etc/php/7.0/fpm/pool.d/www.conf
Mofifier la ligne 36
Debian Jessie :
listen = /run/php/php7.0-fpm.sock
Debian Sid :
listen = /var/run/php/php7.0-fpm.sock
par
listen = 127.0.0.1:9000
fastcgi_pass 127.0.0.1:9000;
systemctl restart php7.0-fpm
systemctl restart nginx
Ajouter un fichier info.php à la racine du serveur web :
echo "<?php phpinfo(); ?>" > /var/www/info.php
Les commandes apt policy et apt autoremove n’existent pas…
apt policy peut être remplacé par apt search et « autoremove » ne peut être utilisé qu’avec l’ancien apt-get
Tu peut raccourcir en : apt-get autoremove –purge php5*
Ah et le socket de PHP 7 c’est /run/php/php7.0-fpm.sock :)
Salut Angristan,
exact, j’ai fais un mixte de Jessie et de Sid…
Article corrigé, merci :-)
je propose une alternative qui permet de générer le fichier sources.list :
[code]
sudo cat > /etc/apt/sources.list.d/dotdeb.list << EOF
deb http://packages.dotdeb.org jessie all
# wget -O – https://www.dotdeb.org/dotdeb.gpg |apt-key add –
EOF
[/code]
Salut,
Sympa le tuto. Merci.
Je l’ai suivi sur un serveur de recette pour tester un peu et ça fonctionne.
Par contre, j’ai une tache qui doit faire de la compression bz2 et ça fonctionne pas. J’ai trouvé sur le net qu’il fallait recompiler PHP7 avec un paramètre du genre « compress:bz2 ».
N’aurais-tu pas une autre solution ?
Merci
++