Questão Como posso fazer o downgrade do PHP 7 para o PHP 5.6 no Ubuntu 16.04? [duplicado]


Esta questão já tem uma resposta aqui:

Eu estou tentando reverter a minha versão do PHP para 5.6 de 7 e embora eu tenha removido o PHP 7 e, em seguida, instalado o PHP 5.6 eu ainda pareço estar executando a versão 7.

Existe um método simples para mover através das versões do PHP onde o apache, phpMyAdmin e co estão configurados apropriadamente?

Uma maneira simples de alterar a versão atual do PHP em tempo real e até mesmo site por site seria ótima.


157
2018-04-24 09:21


origem


Eu pareço ter 5.6 instalado, mas todo o meu php está sendo renderizado como texto agora. - dibs
qual a saída de dpkg -l | grep php| awk '{print $2}' |tr "\n" " " ? - storm
dh-php libapache2-mod-php5 php-comum php-json php-pêra php-xml php5-cli php5-comum php5-json php5-readline php5.6 php5.6-bz2 php5.6-cli php5.6-comum php5.6-curl php5.6-dev Php5.6-fpm php5.6-gd php5.6-json php5.6-mcrypt php5.6-mysql php5.6-opcache php5.6-readline php7.0-comum php7.0-json php7.0-xml pkg-php-tools - dibs
Eu vejo alguns pacotes php7 lá removê-los com aptitude purge php7.0-common php7.0-json php7.0-xml  Também quero saber o que você quer dizer com all my php is rendering as text now - storm
isso significa que você sente falta libapache2-mod-php5.6 pacote ... veja minha resposta abaixo, você não precisa remover php7.0 - Postadelmaga


Respostas:


Atualizar
Hoje eu voltei a ter problema com o PHP 7 rodando apesar de ter desativado php7.0 módulo do apache: phpinfo estava mostrando php 7 usando fastCGI ...
... Então, se depois de seguir as instruções abaixo você enfrentar esta situação, você pode precisar desativar o proxy_fcgi módulo do apache:

sudo a2dismod proxy_fcgi proxy; sudo service apache2 restart

1. Reinstale o PHP 5.6 

O que funcionou para mim foi este guia: http://www.lornajane.net/posts/2016/php-7-0-and-5-6-on-ubuntu

Na verdade, não é necessário remover php7.0, você pode instalar o php5.6 juntos (também porque você terá problemas de dependência com phpmyadmin pacote que exigia php7.0)

Assumindo libapache2-mod-php é uma maneira adequada para habilitar o PHP no Apache para você, você pode proceder desta maneira:

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. Troque a versão do PHP:

  • Do php5.6 ao 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
      
  • Do php7.0 para o 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



você está certo, obrigado, eu consertei os comandos :) - Postadelmaga
@Postadelmaga Ele trabalha para mudar a versão do PHP para os aplicativos da web. Muito obrigado! Mas a CLI ainda executa o PHP7. Você sabe como mudar isso para o PHP5.6 também? - John Linhart
A melhor maneira de fazer isso é remover pacotes php, adicionar Ondrej ppa e instalar php7 e php5.6, lembre-se que você tem phpenmod -v 5.6 para habilitar um módulo php5.6 e phpenmod -v 7.0 para habilitar um módulo php 7.0, mais informações aqui disqus.com/home/discussion/serversforhackers/… - razor7
O post salvou meu dia. - Shoaib Nawaz
@Daenu que, porque php -v irá mostrar a versão do php cli ... o comando sugerido é para o Apache ... se você fizer uma phpinfo() em uma página da web você verá a diferença. - Postadelmaga


Ubuntu 16.04 vem com php 7.0, e alguns php aplicativos ainda podem falhar com php 7.0 Portanto, em alguns casos, pode ser sensato ter ambos php 7.0 e php 5.x, para que você possa escolher qual versão usar para suas necessidades a qualquer momento.

Você pode fazer isso com:

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

Instalando ambos php5.6 & php7.0 estava limpo no meu caso: sem queixas de problemas, etc.

Para mudar de php 5.6 para php 7.0 você precisa fazer duas coisas:

# 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 do php7.0 para o 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

Você também pode verificar rapidamente qual deles está usando executando php -v.


48
2018-05-02 09:29



Usar sudo a2dismod php7.0 && sudo a2enmod php5.6 && sudo service apache2 restart para certificar-se de que os comandos a seguir sejam executados somente quando o anterior for bem-sucedido. Proposta de edição para esta resposta. - Videonauth
Esta é a melhor resposta para aqueles dispostos a instalar ambos php5.6 e php7.0 no Ubuntu 16.04 - Amine Jallouli
Trabalhou como um encanto. Eu gostaria de poder evitá-lo várias vezes. - shiva


Sua pergunta não tem detalhes importantes, então responderei mais amplamente.

Supondo que você esteja usando pacotes, há alguns detalhes importantes:

  1. O Apache2 pode ser configurado para usar apache2 SAPI usando libapache2-mod-php7.0 pacote ou FPM SAPI usando php7.0-fpm com mod_proxy_fcgi.

  2. Ubuntu 16.04 tem apenas PHP 7.0 nos repositórios, você pode usar ppa:ondrej/php para adicionar suporte para PHP 5.6 usando esquema de nomenclatura semelhante (por exemplo, libapache2-mod-php5.6 ou php5.6-fpm).

  3. Se você estiver usando o Apache2 SAPI (libapache2-mod-php*), você precisa desativar o PHP 7.0 depois de instalar libapache2-mod-php5.6 Correndo a2dismod php7.0 e habilite o PHP 5.6 executando a2enmod php5.6.

  4. Se você estiver usando o FPM SAPI (php*-fpm) então você precisa mudar o socket unix do FPM /run/php/php7.0-fpm.sock para /run/php/php5.6-fpm.sock.

  5. Por favor lembre-se que para módulos empacotados com PHP (como o MySQL) a convenção de nomenclatura é phpX.Y-<ext> (por exemplo php7.0-mysql e php5.6-mysql), mas para módulos PECL externos (por exemplo, APCu, mongodb, ...) é apenas php-<ext> (por exemplo php-apcu, php-mongodb). Eu recomendo rodar apt-cache search php <ext> em seu sistema para pesquisar o nome correto do pacote antes de fazer perguntas na Internet.


11
2018-04-24 10:04



Você pode elaborar um pouco sobre como você alteraria o soquete unix do FPM? - myol


Eu acho que você deve remover seus pacotes php e instalar o php5.6. Você pode proceder da seguinte maneira:

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

Você pode então verificar a versão do seu php para ter certeza. Isso é feito como visto abaixo:

php -v

5
2018-04-24 09:38



Espero que o fato de você remover seus pacotes php atuais e instalar o php recentemente seja de grande ajuda para você. - Yufenyuy Veyeh Dider
Você não precisa fazer magia grep-awk como todos os pacotes dependem php5-commontão simples: apt-get purge php5-common irá limpar todos os pacotes php5 do seu sistema. - oerdnj