Question Comment puis-je rétrograder de PHP 7 à PHP 5.6 sur Ubuntu 16.04? [dupliquer]


Cette question a déjà une réponse ici:

J'essaie de ramener ma version de PHP à 5.6 à partir de 7 et bien que j'aie supprimé PHP 7 et que j'aie ensuite installé PHP 5.6, je semble toujours utiliser la version 7.

Existe-t-il une méthode simple pour passer à travers les versions de PHP où apache, phpMyAdmin et co sont configurés de manière appropriée?

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


157
2018-04-24 09:21


origine


Je semble avoir 5.6 installé mais tout mon php rend maintenant en tant que texte. - dibs
ce que la sortie de dpkg -l | grep php| awk '{print $2}' |tr "\n" " " ? - storm
dh-php libapache2-mod-php5 php-php-php-php-php-php-php5-php5-php5-php5-php5-php5.6 php5.6-php5.6-php5.6-php5.6-php5.6 php5.6-curl php5.6-dev php5.6-fpm php5.6-php5.6-php5.6-php5.6-php5.6-php5.6-opcache php5.6-readline php7.0-common php7.0-json php7.0-xml pkg-php-tools - dibs
Je vois des paquets php7 là-bas les supprimer avec aptitude purge php7.0-common php7.0-json php7.0-xml  aussi je veux savoir ce que tu veux dire par all my php is rendering as text now - storm
cela signifie que vous manquez libapache2-mod-php5.6 package ... voir ma réponse ci-dessous, vous n'avez pas besoin de supprimer php7.0 - Postadelmaga


Réponses:


Mettre à jour
Aujourd'hui, j'ai de nouveau eu des problèmes avec PHP 7 en cours d'exécution malgré la désactivation php7.0 module apache: phpinfo montrait php 7 en utilisant fastCGI ...
... Donc, si vous suivez les instructions ci-dessous, vous devrez peut-être désactiver la proxy_fcgi module apache:

sudo a2dismod proxy_fcgi proxy; sudo service apache2 restart

1. Réinstallez 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 ensemble (aussi parce que vous aurez un problème de dépendance avec phpmyadmin paquet qui nécessite php7.0)

En supposant libapache2-mod-php est un moyen approprié 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 de version de PHP:

  • De php5.6 à php7.0:

    • Apache:

      sudo a2dismod php5.6 ; sudo a2enmod php7.0 ; sudo service apache2 restart
      
    • Le 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
      

296
2018-04-25 02:58



tu as raison, merci, j'ai corrigé les commandes :) - Postadelmaga
@Postadelmaga Cela fonctionne pour changer la version de PHP pour les applications Web. Merci beaucoup! Mais la CLI exécute toujours PHP7. Savez-vous comment passer à PHP5.6 également? - John Linhart
La meilleure façon de le faire est de supprimer les paquets PHP, d’ajouter Ondrej ppa, puis d’installer php7 et php5.6. N'oubliez pas que vous avez phpenmod -v 5.6 pour activer un module php5.6 et phpenmod -v 7.0 pour activer un module php 7.0. plus d'infos ici disqus.com/home/discussion/serversforhackers/ - razor7
Le message a sauvé ma journée. - Shoaib Nawaz
@Daenu parce que php -v est va vous montrer la version php cli ... la commande suggérée est pour Apache ... si vous faites un phpinfo() dans une page Web, vous verrez la différence. - Postadelmaga


Ubuntu 16.04 est livré avec php 7.0, et certaines php les applications peuvent encore échouer avec php 7.0 .Par conséquent, dans certains cas, il pourrait être judicieux d'avoir les deux php 7.0 et php 5.x, de sorte que vous pouvez choisir la version à utiliser pour vos besoins à tout moment.

Vous pouvez le faire avec:

xavi@computer# sudo su
root@computer# add-apt-repository ppa:ondrej/php
root@computer# apt-get update
root@computer# 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

Installer les deux php5.6 & php7.0 était propre dans mon cas: pas se plaindre de problèmes, etc.

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

# For php in web apps
sudo a2dismod php5.6 && sudo a2enmod php7.0 && sudo service apache2 restart
# For php-cli in the command line
sudo ln -sfn /usr/bin/php7.0 /etc/alternatives/php

ou de php7.0 à php5.6:

# For php in web apps
sudo a2dismod php7.0 && sudo a2enmod php5.6 && sudo service apache2 restart
# For php-cli in the command line
sudo ln -sfn /usr/bin/php5.6 /etc/alternatives/php

Vous pouvez également vérifier rapidement ce que vous utilisez en exécutant php -v.


48
2018-05-02 09:29



Utilisation sudo a2dismod php7.0 && sudo a2enmod php5.6 && sudo service apache2 restart pour vous assurer que les commandes suivantes ne sont exécutées que lorsque la précédente est réussie. Propose une modification à cette réponse. - Videonauth
Ceci est la meilleure réponse pour ceux qui veulent installer les deux php5.6 et php7.0 sur Ubuntu 16.04 - Amine Jallouli
Travaillé comme un charme. Je souhaite que je puisse le revérifier plusieurs fois. - shiva


Votre question manque de détails importants, alors je répondrai plus largement.

En supposant que vous utilisez des paquets, il y a quelques détails importants:

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

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

  3. Si vous utilisez Apache2 SAPI (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 cours d'exécution a2enmod php5.6.

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

  5. S'il vous plaît rappelez-vous que pour les modules fournis avec PHP (comme MySQL), la convention de nommage est phpX.Y-<ext> (f.e. php7.0-mysql et php5.6-mysql), mais pour les modules externes PECL (par exemple, APCu, mongodb, ...), c'est juste php-<ext> (f.e. php-apcu, php-mongodb). Je recommande de courir apt-cache search php <ext> sur votre système pour rechercher le nom de package correct avant de poser une question sur Internet.


11
2018-04-24 10:04



Pouvez-vous nous en dire un peu plus sur la manière de changer le socket unix de FPM? - myol


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

sudo aptitude purge dpkg -l | grep php| awk '{print $2}' |tr "\n" " "
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install php5.6

Vous pouvez alors vérifier la version de votre php pour être sûr. C'est fait comme vu ci-dessous:

php -v

5
2018-04-24 09:38



J'espère que le fait de supprimer vos paquets php actuels et d'installer php fraîchement vous aidera beaucoup. - Yufenyuy Veyeh Dider
Vous n'avez pas besoin de faire de la magie grep-awk car tous les paquets dépendent php5-common, si simplement: apt-get purge php5-common va purger tous les paquets php5 de votre système. - oerdnj