180 votes

Comment puis-je revenir de PHP 7 à PHP 5.6 sur Ubuntu 16.04?

Je suis en train d'essayer de revenir à ma version PHP 5.6 à partir de la version 7 et bien que j'ai supprimé PHP 7 puis installé PHP 5.6, il semble que je continue à utiliser la version 7.

Existe-t-il une méthode simple pour passer d'une version de PHP à une autre tout en configurant correctement Apache, phpMyAdmin, etc.?

Un moyen simple de changer la version actuelle de PHP à la volée et même site par site serait génial.

340voto

Postadelmaga Points 5531

Mise à jour
Aujourd'hui, j'ai de nouveau eu un problème avec PHP 7 qui s'exécutait malgré le fait que j'ai désactivé le module apache php7.0 : phpinfo affichait PHP 7 utilisant fastCGI ...
... Donc, si après avoir suivi les instructions ci-dessous, vous rencontrez cette situation, vous devrez peut-être désactiver le module apache proxy_fcgi:

sudo a2dismod proxy_fcgi proxy; sudo service apache2 restart

1. Réinstaller PHP 5.6

Ce qui a fonctionné pour moi était ce guide : http://www.lornajane.net/posts/2016/php-7-0-and-5-6-on-ubuntu

En fait, il n'est pas nécessaire de supprimer php7.0, vous pouvez installer php5.6 en parallèle (car vous aurez un problème de dépendance avec le paquet phpmyadmin qui nécessite php7.0)

En supposant que libapache2-mod-php soit une manière adaptée pour activer PHP dans Apache pour vous, vous pouvez procéder de cette manière :

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install php7.0 php5.6 php5.6-mysql php-gettext php5.6-mbstring php-mbstring php7.0-mbstring php-xdebug libapache2-mod-php5.6 libapache2-mod-php7.0

2. Changer la version de PHP:

  • De php5.6 à php7.0:

    • Apache:

      sudo a2dismod php5.6 ; sudo a2enmod php7.0 ; sudo service apache2 restart
    • CLI:

      sudo update-alternatives --set php /usr/bin/php7.0
  • De php7.0 à php5.6:

    • Apache:

      sudo a2dismod php7.0 ; sudo a2enmod php5.6 ; sudo service apache2 restart
    • CLI:

      sudo update-alternatives --set php /usr/bin/php5.6

51voto

Ubuntu 16.04 est livré avec php 7.0, et certaines applications php pourraient encore échouer avec php 7.0. Par conséquent, dans certains cas, il peut être judicieux d'avoir à la fois php 7.0 et php 5.x, afin que vous puissiez choisir la version à utiliser en fonction de vos besoins à tout moment.

Vous pouvez le faire avec :

xavi@ordinateur# sudo su
root@ordinateur# add-apt-repository ppa:ondrej/php
root@ordinateur# apt-get update
root@ordinateur# apt-get install php7.0 php5.6 php5.6-mysql php-gettext php5.6-mbstring php-xdebug libapache2-mod-php5.6 libapache2-mod-php7.0 php5.6-curl php5.6-gd php5.6-mcrypt php5.6-xml php5.6-xmlrpc

L'installation de php5.6 & php7.0 s'est bien passée dans mon cas : aucune plainte de problèmes, etc.

Pour passer de php 5.6 à php 7.0, vous devez faire deux choses :

# Pour php dans les applications web
sudo a2dismod php5.6 && sudo a2enmod php7.0 && sudo service apache2 restart
# Pour php-cli dans la ligne de commande
sudo ln -sfn /usr/bin/php7.0 /etc/alternatives/php

ou de php7.0 à php5.6 :

# Pour php dans les applications web
sudo a2dismod php7.0 && sudo a2enmod php5.6 && sudo service apache2 restart
# Pour php-cli dans la ligne de commande
sudo ln -sfn /usr/bin/php5.6 /etc/alternatives/php

Vous pouvez également vérifier rapidement lequel est utilisé en exécutant php -v.

12voto

oerdnj Points 7822

Votre question manque de détails importants, donc je vais répondre de manière plus générale.

En supposant que vous utilisez des packages, voici quelques détails importants :

  1. Apache2 peut être configuré pour utiliser soit le SAPI apache2 en utilisant le package libapache2-mod-php7.0, soit le SAPI FPM en utilisant php7.0-fpm avec mod_proxy_fcgi.

  2. Ubuntu 16.04 n'a que PHP 7.0 dans les dépôts, vous pouvez utiliser ppa:ondrej/php pour ajouter le support de PHP 5.6 en utilisant un schéma de nommage similaire (par exemple libapache2-mod-php5.6 ou php5.6-fpm).

  3. Si vous utilisez le SAPI Apache2 (libapache2-mod-php*), vous devez désactiver PHP 7.0 après avoir installé libapache2-mod-php5.6 en exécutant a2dismod php7.0 et activer PHP 5.6 en exécutant a2enmod php5.6.

  4. Si vous utilisez le SAPI FPM (php*-fpm), alors vous devez changer le socket Unix FPM de /run/php/php7.0-fpm.sock à /run/php/php5.6-fpm.sock.

  5. N'oubliez pas que pour les modules inclus avec PHP (comme MySQL), la convention de nommage est phpX.Y- (par exemple php7.0-mysql et php5.6-mysql), mais pour les modules PECL externes (par exemple, APCu, mongodb, ...), c'est juste php- (par exemple php-apcu, php-mongodb). Je recommande d'exécuter apt-cache search php sur votre système pour rechercher le nom correct du package avant de poser des questions sur Internet.

6voto

ThunderBird Points 1883

Je pense que vous devriez supprimer vos paquets php et installer php5.6. Vous pouvez procéder comme suit :

sudo apt-get purge php7.*
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install php5.6

Ensuite, vous pouvez vérifier la version de votre php pour être sûr. Cela se fait comme indiqué ci-dessous :

php -v

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X