Domanda Come posso effettuare il downgrade da PHP 7 a PHP 5.6 su Ubuntu 16.04? [duplicare]


Questa domanda ha già una risposta qui:

Sto provando a ripristinare la versione di PHP a 5.6 da 7 e, sebbene abbia rimosso PHP 7 e installato PHP 5.6, sembra che sia ancora in esecuzione la versione 7.

Esiste un metodo semplice per passare attraverso le versioni di PHP in cui apache, phpMyAdmin e co sono configurati in modo appropriato?

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


157
2018-04-24 09:21


origine


Mi sembra di avere 5.6 installato, ma tutto il mio php viene visualizzato come testo ora. - dibs
quale sia l'output di dpkg -l | grep php| awk '{print $2}' |tr "\n" " " ? - storm
dh-php libpache2-mod-php5 php-comune php-json php-pera php-xml php5-cli php5-comune php5-json php5-readline php5.6 php5.6-bz2 php5.6-cli php5.6-comune 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-comune php7.0-json php7.0-xml pkg-php-tools - dibs
Vedo alcuni pacchetti di php7 li li rimuovo con aptitude purge php7.0-common php7.0-json php7.0-xml  anche io voglio sapere cosa intendi con all my php is rendering as text now - storm
significa che ti manca libapache2-mod-php5.6 pacchetto ... vedi la mia risposta qui sotto, non è necessario rimuovere php7.0 - Postadelmaga


risposte:


Aggiornare
Oggi ho avuto di nuovo problemi con PHP 7 in esecuzione nonostante io abbia disabilitato php7.0 modulo apache: phpinfo stava mostrando php 7 usando fastCGI ...
... Quindi, se dopo aver seguito le istruzioni riportate di seguito si verifica questa situazione, potrebbe essere necessario disabilitare il proxy_fcgi modulo apache:

sudo a2dismod proxy_fcgi proxy; sudo service apache2 restart

1. Reinstallare PHP 5.6 

Ciò 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 un problema di dipendenza con phpmyadmin pacchetto che richiede php7.0)

assumendo libapache2-mod-php è un modo adatto per abilitare PHP in Apache per te, 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 la 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
      

296
2018-04-25 02:58



hai ragione, grazie, ho corretto i comandi :) - Postadelmaga
@Postadelmaga Funziona per cambiare la versione di PHP per le app web. Molte grazie! Ma la CLI esegue ancora PHP7. Sai come passare a PHP5.6 come bene? - John Linhart
Il modo migliore per farlo è rimuovere i pacchetti php di serie, aggiungere Ondrej ppa e quindi installare php7 e php5.6, ricorda di avere phpenmod -v 5.6 per abilitare un modulo php5.6 e phpenmod -v 7.0 per abilitare un modulo php 7.0, maggiori informazioni qui disqus.com/home/discussion/serversforhackers/... - razor7
Il post ha salvato la mia giornata. - Shoaib Nawaz
@Denu che perché php -v ti mostrerà la versione php cli ... il comando suggerito è per Apache ... se fai un phpinfo() in una pagina web vedrai la differenza. - Postadelmaga


Ubuntu 16.04 viene fornito con php 7.0, e alcuni php le applicazioni potrebbero ancora fallire php 7.0 Pertanto, in alcuni casi, potrebbe essere ragionevole avere entrambi php 7.0 e php 5.x, in modo che tu possa scegliere quale versione utilizzare per le tue esigenze in qualsiasi momento.

Puoi farlo con:

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

Installare entrambi php5.6 & php7.0 era pulito nel mio caso: non lamentarsi di problemi, ecc.

Per passare da php 5.6 a php 7.0 devi fare due cose:

# 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

o da php7.0 a 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

Puoi anche controllare rapidamente che cosa stai usando eseguendo php -v.


48
2018-05-02 09:29



Uso sudo a2dismod php7.0 && sudo a2enmod php5.6 && sudo service apache2 restart per assicurarsi che i seguenti comandi vengano eseguiti solo quando il precedente ha esito positivo. Proposta una modifica a questa risposta. - Videonauth
Questa è la migliore risposta per quelli che vogliono installare entrambi php5.6 e php7.0 su Ubuntu 16.04 - Amine Jallouli
Ha funzionato come un fascino. Vorrei poterlo revocare più volte. - shiva


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

Supponendo che stai usando pacchetti, ci sono alcuni dettagli importanti:

  1. Apache2 può essere configurato per l'utilizzo di entrambi apache2 SAPI usando libapache2-mod-php7.0 pacchetto o FPM SAPI utilizzando 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 utilizzando uno schema di denominazione simile (ad es. libapache2-mod-php5.6 o php5.6-fpm).

  3. Se si utilizza Apache2 SAPI (libapache2-mod-php*), è necessario disabilitare PHP 7.0 dopo l'installazione libapache2-mod-php5.6 correndo a2dismod php7.0 e abilitare PHP 5.6 eseguendo a2enmod php5.6.

  4. Se si utilizza FPM SAPI (php*-fpm) quindi è necessario modificare il socket unix FPM da /run/php/php7.0-fpm.sock a /run/php/php5.6-fpm.sock.

  5. Si ricorda che per i moduli in bundle con PHP (come MySQL) la convenzione di denominazione è phpX.Y-<ext> (F.e. php7.0-mysql e php5.6-mysql), ma per i moduli PECL esterni (ad es. APCu, mongodb, ...) è giusto php-<ext> (F.e. php-apcu, php-mongodb). Raccomando di correre apt-cache search php <ext> sul sistema per cercare il nome corretto del pacchetto prima di fare domande su Internet.


11
2018-04-24 10:04



Puoi approfondire un po 'come cambi il socket unix FPM? - myol


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

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

Puoi quindi verificare la versione del tuo php per essere sicuro. È fatto come visto di seguito:

php -v

5
2018-04-24 09:38



Spero che il fatto di rimuovere i tuoi attuali pacchetti php e installare php sia di grande aiuto per te. - Yufenyuy Veyeh Dider
Non hai bisogno di fare la magia grep-awk dal momento che tutti i pacchetti dipendono da php5-common, così semplicemente: apt-get purge php5-common eliminerà tutti i pacchetti php5 dal tuo sistema. - oerdnj