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