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

154

Eu estou tentando reverter minha versão do PHP para 5.6 de 7 e, embora eu tenha removido o PHP 7 e instalado o PHP 5.6, eu ainda pareço estar rodando 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 rapidamente e até mesmo site por site seria ótima.

    
por dibs 24.04.2016 / 11:21

4 respostas

286

Atualizar
Hoje voltei a ter problema com o PHP 7 rodando apesar de ter desabilitado o módulo php7.0 apache: phpinfo estava mostrando php 7 usando o fastCGI ...
... Então, se depois de seguir as instruções abaixo você enfrentar essa situação, talvez seja necessário desativar o módulo proxy_fcgi apache:

sudo a2dismod proxy_fcgi proxy; sudo service apache2 restart

1. Reinstale o PHP 5.6

O que funcionou para mim foi este guia: link

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 o pacote phpmyadmin que exigiu php7.0)

Assumindo que libapache2-mod-php é uma maneira adequada de ativar o PHP no Apache para você, você pode continuar desta forma:

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

  • Do php5.6 para 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
      
por Postadelmaga 25.04.2016 / 04:58
48

O 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 escolha 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

A instalação de ambos os php5.6 & php7.0 foi limpa 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.

    
por Xavier de Pedro Puente 02.05.2016 / 11:29
11

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 package ou FPM SAPI usando php7.0-fpm com mod_proxy_fcgi .

  2. O 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 similar (por exemplo, libapache2-mod-php5.6 ou php5.6-fpm ).

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

  4. Se você estiver usando o SAPPM do FPM ( php*-fpm ), será necessário alterar o soquete unix do FPM de /run/php/php7.0-fpm.sock para /run/php/php5.6-fpm.sock .

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

por oerdnj 24.04.2016 / 12:04
5

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

sudo aptitude purge dpkg -l | grep php| awk '{print }' |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
    
por Yufenyuy Veyeh Dider 24.04.2016 / 11:38