Miten voin päivittää PHP 7:stä PHP 5.6:een Ubuntu 16.04:ssä?

Yritän palauttaa PHP-versioni 5.6:een 7:stä, ja vaikka poistin PHP 7:n ja asensin PHP 5.6:n, näyttäisi siltä, että versio 7 on edelleen käytössä.

Onko olemassa yksinkertaista menetelmää PHP-versioiden siirtämiseen, jossa apache, phpMyAdmin ja muut on konfiguroitu asianmukaisesti?

Yksinkertainen tapa vaihtaa PHP:n nykyistä versiota lennossa ja jopa sivustokohtaisesti olisi hienoa.

Ratkaisu

Päivitys Tänään sain taas ongelman PHP 7:n kanssa, vaikka olen poistanut php7.0 apache-moduulin käytöstä: phpinfo näytti php 7:n käyttävän fastCGI:tä ...
... Joten jos alla olevien ohjeiden noudattamisen jälkeen kohtaat tämän tilanteen, sinun on ehkä poistettava proxy_fcgi apache-moduuli käytöstä:

sudo a2dismod proxy_fcgi proxy; sudo service apache2 restart

1. Asenna PHP 5.6 uudelleen

Minulle toimi tämä opas: http://www.lornajane.net/posts/2016/php-7-0-and-5-6-on-ubuntu.

Itse asiassa ei tarvitse poistaa php7.0, voit asentaa php5.6:n yhdessä ( myös siksi, että sinulla on riippuvuusongelma phpmyadmin-paketin kanssa, joka vaatii php7.0:n).

Olettaen, että libapache2-mod-php on sinulle sopiva tapa ottaa PHP käyttöön Apachessa, voit jatkaa näin:

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. Vaihda PHP-versio:

  • 5.6:sta php7.0:aan:

    • Apache:

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

         sudo update-alternatives --set php /usr/bin/php7.0: sudo update-alternatives --set php /usr/bin/php7.0
  • php7.0:sta php5.6:een:

    • Apache:

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

         6: sudo update-alternatives --set php /usr/bin/php5.6: sudo update-alternatives --set php /usr/bin/php5.6
Kommentit (21)

Kysymyksestäsi puuttuu tärkeitä yksityiskohtia, joten vastaan laajemmin.

Olettaen, että käytät paketteja, on joitakin tärkeitä yksityiskohtia:

  1. Apache2 voidaan konfiguroida käyttämään joko apache2 SAPI:tä käyttäen libapache2-mod-php7.0-pakettia tai FPM SAPI:tä käyttäen php7.0-fpm-pakettia ja mod_proxy_fcgi-pakettia.

  2. Ubuntu 16.04:n arkistoissa on vain PHP 7.0, voit käyttää ppa:ondrej/php lisätäksesi tuen PHP 5.6:lle käyttämällä samanlaista nimeämismallia (esim. libapache2-mod-php5.6 tai php5.6-fpm).

  3. Jos käytät Apache2 SAPI:tä (libapache2-mod-php*), sinun on poistettava PHP 7.0 käytöstä asennuksen libapache2-mod-php5.6 jälkeen ajamalla a2dismod php7.0 ja otettava PHP 5.6 käyttöön ajamalla a2enmod php5.6.

  4. Jos käytät FPM SAPI:tä (php*-fpm), sinun on vaihdettava FPM:n unix-soketti sijasta /run/php/php7.0-fpm.sock muotoon /run/php/php5.6-fpm.sock.

  5. Muistathan, että PHP:n kanssa niputettujen moduulien (kuten MySQL:n) nimeämiskäytäntö on phpX.Y- (esim. php7.0-mysql ja php5.6-mysql), mutta ulkoisille PECL-moduuleille (esim. APCu, mongodb, ...) se on vain php- (esim. php-apcu, php-mongodb). Suosittelen ajamaan apt-cache search php järjestelmässäsi etsiessäsi oikeaa paketin nimeä ennen kuin kysyt kysymyksiä Internetissä.

Kommentit (1)

Mielestäni sinun pitäisi poistaa php-paketit ja asentaa php5.6. Voit toimia seuraavasti:

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

Sen jälkeen voit tarkistaa php:n version varmuuden vuoksi. Se tehdään kuten alla näkyy:

php -v
Kommentit (2)