Hvordan kan jeg nedgradere fra PHP 7 til PHP 5.6 på Ubuntu 16.04?

Jeg prøver å tilbakestille PHP-versjonen min til 5.6 fra 7, og selv om jeg fjernet PHP 7 og deretter installerte PHP 5.6, ser det ut til at jeg fortsatt kjører versjon 7.

Er det en enkel metode for å flytte gjennom PHP-versjoner der apache, phpMyAdmin og co er konfigurert riktig?

En enkel måte å endre gjeldende versjon av PHP på farten og til og med nettsted for nettsted ville være flott.

Løsning

Oppdatering I dag fikk jeg igjen problemer med PHP 7 som kjører til tross for at jeg har deaktivert php7.0 apache-modulen: phpinfo viste php 7 ved hjelp av fastCGI ...
... Så hvis du etter å ha fulgt instruksjonene nedenfor står overfor denne situasjonen, må du kanskje deaktivere proxy_fcgi apache-modulen:

sudo a2dismod proxy_fcgi proxy; sudo service apache2 restart

1. Installer PHP 5.6 på nytt

Det som fungerte for meg var denne guiden: http://www.lornajane.net/posts/2016/php-7-0-and-5-6-on-ubuntu

Egentlig er det ikke nødvendig å fjerne php7.0, du kan installere php5.6 sammen (også fordi du vil ha avhengighetsproblem med phpmyadmin-pakken som krevde php7.0)

Forutsatt at libapache2-mod-php er en passende måte å aktivere PHP i Apache for deg, kan du fortsette på denne måten:

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. Bytt PHP-versjon:

  • Fra php5.6 til php7.0:

    • Apache:

         sudo a2dismod php5.6 ; sudo a2enmod php7.0 ; sudo service apache2 restart
    • CLI:

         sudo update-alternativer --set php /usr/bin/php7.0
  • Fra php7.0 til php5.6:

    • Apache:

         sudo a2dismod php7.0; sudo a2enmod php5.6; sudo service apache2 restart
    • CLI:

         sudo update-alternativer --set php /usr/bin/php5.6
Kommentarer (21)

Spørsmålet ditt mangler viktige detaljer, så jeg vil svare mer generelt.

Forutsatt at du bruker pakker, er det noen viktige detaljer:

  1. Apache2 kan konfigureres til å bruke enten apache2 SAPI ved hjelp av libapache2-mod-php7.0 pakke eller FPM SAPI ved hjelp av php7.0-fpm med mod_proxy_fcgi.

  2. Ubuntu 16.04 har bare PHP 7.0 i depotene, du kan bruke ppa:ondrej/php for å legge til støtte for PHP 5.6 ved hjelp av lignende navneskjema (f.eks. libapache2-mod-php5.6 eller php5.6-fpm).

  3. Hvis du bruker Apache2 SAPI (libapache2-mod-php*), må du deaktivere PHP 7.0 etter at du har installert libapache2-mod-php5.6 ved å kjøre a2dismod php7.0 og aktivere PHP 5.6 ved å kjøre a2enmod php5.6.

  4. Hvis du bruker FPM SAPI (php*-fpm), må du endre FPM unix socket fra /run/php/php7.0-fpm.sock til /run/php/php5.6-fpm.sock.

  5. Husk at for moduler som følger med PHP (som MySQL) er navnekonvensjonen phpX.Y- (f.eks. php7.0-mysql og php5.6-mysql), men for eksterne PECL-moduler (f.eks. APCu, mongodb, ...) er det bare php- (f.eks. php-apcu, php-mongodb). Jeg anbefaler å kjøre apt-cache search php på systemet ditt for å søke etter riktig pakkenavn før du stiller spørsmål på Internett.

Kommentarer (1)

Jeg tror du bør fjerne php-pakkene dine og installere php5.6. Du kan fortsette som følger:

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

Du kan deretter sjekke versjonen av php for å være sikker. Det gjøres som vist nedenfor:

php -v
Kommentarer (2)