Hur kan jag nedgradera från PHP 7 till PHP 5.6 på Ubuntu 16.04?

Jag försöker återställa min PHP-version till 5.6 från 7 och även om jag tog bort PHP 7 och sedan installerade PHP 5.6 verkar jag fortfarande köra version 7.

Finns det en enkel metod för att flytta mellan PHP-versioner där apache, phpMyAdmin och co är konfigurerade på rätt sätt?

Ett enkelt sätt att ändra den aktuella PHP-versionen i farten och till och med från plats till plats skulle vara bra.

Lösning

uppdatering Idag fick jag återigen problem med PHP 7 trots att jag har inaktiverat apachemodulen php7.0: phpinfo visade att php 7 använde fastCGI ...
... Så om du möter denna situation efter att du följt nedanstående instruktioner kan du behöva inaktivera apachemodulen proxy_fcgi:

sudo a2dismod proxy_fcgi proxy; sudo service apache2 restart

1. Återinstallera PHP 5.6

Det som fungerade för mig var den här guiden: http://www.lornajane.net/posts/2016/php-7-0-and-5-6-on-ubuntu

Det är faktiskt inte nödvändigt att ta bort php7.0, du kan installera php5.6 tillsammans (även för att du kommer att få beroendeproblem med phpmyadmin-paketet som kräver php7.0).

Om du antar att libapache2-mod-php är ett lämpligt sätt att aktivera PHP i Apache för dig, kan du fortsätta på detta sätt:

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. Byt PHP-version:

  • Från php5.6 till 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
  • Från php7.0 till 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
Kommentarer (21)

Din fråga saknar viktiga detaljer, så jag kommer att ge ett mer allmänt svar.

Om du antar att du använder paket finns det några viktiga detaljer:

  1. Apache2 kan konfigureras för att använda antingen apache2 SAPI med hjälp av paketet libapache2-mod-php7.0 eller FPM SAPI med hjälp av php7.0-fpm med mod_proxy_fcgi.

  2. Ubuntu 16.04 har endast PHP 7.0 i förråden, du kan använda ppa:ondrej/php för att lägga till stöd för PHP 5.6 med hjälp av ett liknande namnschema (t.ex. libapache2-mod-php5.6 eller php5.6-fpm).

  3. Om du använder Apache2 SAPI (libapache2-mod-php*) måste du inaktivera PHP 7.0 efter installationen av libapache2-mod-php5.6 genom att köra a2dismod php7.0 och aktivera PHP 5.6 genom att köra a2enmod php5.6.

  4. Om du använder FPM SAPI (php*-fpm) måste du ändra FPM unix socket från /run/php/php7.0-fpm.sock till /run/php/php5.6-fpm.sock.

  5. Kom ihåg att för moduler som ingår i PHP (som MySQL) är namnkonventionen phpX.Y- (t.ex. php7.0-mysql och php5.6-mysql), men för externa PECL-moduler (t.ex. APCu, mongodb, ...) är det bara php- (t.ex. php-apcu, php-mongodb). Jag rekommenderar att du kör apt-cache search php på ditt system för att söka efter rätt paketnamn innan du ställer frågor på Internet.

Kommentarer (1)

Jag tror att du bör ta bort dina php-paket och installera php5.6. Du kan gå tillväga på följande sätt:

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

Du kan sedan kontrollera versionen av din php för att vara säker. Det görs enligt nedan:

php -v
Kommentarer (2)