Come posso fare il downgrade da PHP 7 a PHP 5.6 su Ubuntu 16.04?

Sto cercando di riportare la mia versione di PHP alla 5.6 dalla 7 e anche se ho rimosso PHP 7 e poi ho installato PHP 5.6 sembra che stia ancora eseguendo la versione 7.

C'è un metodo semplice per spostarsi attraverso le versioni di PHP dove apache, phpMyAdmin e co sono configurati in modo appropriato?

Un modo semplice per cambiare la versione corrente di PHP al volo e anche sito per sito sarebbe fantastico.

Soluzione

Aggiornamento Oggi ho avuto di nuovo un problema con PHP 7 in esecuzione nonostante abbia disabilitato il modulo apache php7.0: phpinfo mostrava php 7 usando fastCGI ...
... Quindi se dopo aver seguito le istruzioni qui sotto ti trovi di fronte a questa situazione, potresti aver bisogno di disabilitare il modulo apache proxy_fcgi:

sudo a2dismod proxy_fcgi proxy; sudo service apache2 restart

1. Re-installare PHP 5.6

Quello che ha funzionato per me è stata questa guida: http://www.lornajane.net/posts/2016/php-7-0-and-5-6-on-ubuntu

In realtà non è necessario rimuovere php7.0, puoi installare php5.6 insieme (anche perché avrai problemi di dipendenza con il pacchetto phpmyadmin che richiede php7.0)

Assumendo che libapache2-mod-php sia un modo adatto a te per abilitare PHP in Apache, puoi procedere in questo modo:

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. Cambia versione di PHP:

  • Da php5.6 a 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
  • Da php7.0 a 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
Commentari (21)

La tua domanda manca di dettagli importanti, quindi ti risponderò in modo più ampio.

Supponendo che tu stia usando dei pacchetti, ci sono alcuni dettagli importanti:

  1. Apache2 può essere configurato per usare sia apache2 SAPI usando il pacchetto libapache2-mod-php7.0 o FPM SAPI usando php7.0-fpm con mod_proxy_fcgi.

  2. Ubuntu 16.04 ha solo PHP 7.0 nei repository, puoi usare ppa:ondrej/php per aggiungere il supporto per PHP 5.6 usando uno schema di denominazione simile (per esempio libapache2-mod-php5.6 o php5.6-fpm).

  3. Se stai usando Apache2 SAPI (libapache2-mod-php*), devi disabilitare PHP 7.0 dopo aver installato libapache2-mod-php5.6 eseguendo a2dismod php7.0 e abilitare PHP 5.6 eseguendo a2enmod php5.6.

  4. Se stai usando FPM SAPI (php*-fpm) allora devi cambiare il socket unix di FPM da /run/php/php7.0-fpm.sock a /run/php/php5.6-fpm.sock.

  5. Ricorda che per i moduli in bundle con PHP (come MySQL) la convenzione di denominazione è phpX.Y- (ad esempio php7.0-mysql e php5.6-mysql), ma per i moduli PECL esterni (ad esempio APCu, mongodb, ...) è semplicemente php- (ad esempio php-apcu, php-mongodb). Raccomando di eseguire apt-cache search php sul tuo sistema per cercare il nome corretto del pacchetto prima di fare domande su Internet.

Commentari (1)

Penso che dovresti rimuovere i tuoi pacchetti php e installare php5.6. Puoi procedere come segue:

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

Puoi poi controllare la versione del tuo php per essere sicuro. Si fa come si vede qui sotto:

php -v
Commentari (2)