How can I downgrade from PHP 7 to PHP 5.6 on Ubuntu 16.04?
Solution 1
Update
Today I got again problem with PHP 7 running despite I have disabled php7.0
apache module: phpinfo
was showing php 7 using fastCGI ...
... So if after you follow the below instructions you face this situation, you may need to disable the proxy_fcgi
apache module:
sudo a2dismod proxy_fcgi proxy; sudo service apache2 restart
1. Re-Install PHP 5.6
What worked for me was this guide: http://www.lornajane.net/posts/2016/php-7-0-and-5-6-on-ubuntu
Actually is not required to remove php7.0
, you can install php5.6 together ( also because you will have dependency problem with phpmyadmin
package that required php7.0)
Assuming libapache2-mod-php
is a suitable way to enable PHP in Apache for you, you can proceed in this way:
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. Switch PHP version:
-
From php5.6 to 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
-
-
From php7.0 to 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
-
Solution 2
Ubuntu 16.04 comes with php 7.0
, and some php
applications might still fail with php 7.0
.Therefore, in some cases, it might be sensible to have both php 7.0
and php 5.x
, so that you can choose which version to use for your needs at any time.
You can do so with:
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
Installing both php5.6 & php7.0
was clean in my case: no complain of issues, etc.
To switch from php 5.6
to php 7.0
you need to do two things:
# 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
or from php7.0 to 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
You can also quickly check which yours is using by running php -v.
Solution 3
Your question lacks important details, so I will answer more broadly.
Assuming you are using packages, there are some important details:
Apache2 can be configured to use either
apache2
SAPI usinglibapache2-mod-php7.0
package or FPM SAPI usingphp7.0-fpm
withmod_proxy_fcgi
.Ubuntu 16.04 has only PHP 7.0 in the repositories, you can use
ppa:ondrej/php
to add support for PHP 5.6 using similar naming scheme (e.g.libapache2-mod-php5.6
orphp5.6-fpm
).If you are using Apache2 SAPI (
libapache2-mod-php*
), you need to disable PHP 7.0 after you installlibapache2-mod-php5.6
by runninga2dismod php7.0
and enable PHP 5.6 by runninga2enmod php5.6
.If you are using FPM SAPI (
php*-fpm
) then you need to change FPM unix socket from/run/php/php7.0-fpm.sock
to/run/php/php5.6-fpm.sock
.Please remember that for modules bundled with PHP (like MySQL) the naming convention is
phpX.Y-<ext>
(f.e.php7.0-mysql
andphp5.6-mysql
), but for external PECL modules (f.e. APCu, mongodb, ...) it's justphp-<ext>
(f.e.php-apcu
,php-mongodb
). I recommend runningapt-cache search php <ext>
on your system to search for correct package name before asking a questions on the Internet.
Solution 4
I think you should remove your php packages and install php5.6. You can proceed as follows:
sudo apt-get purge php7.*
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install php5.6
You can then check the version of your php to be sure. It is done as seen below:
php -v
Related videos on Youtube
![dibs](https://i.stack.imgur.com/GoHNy.png?s=256&g=1)
dibs
Updated on September 18, 2022Comments
-
dibs almost 2 years
I am trying to revert my PHP version to 5.6 from 7 and though I removed PHP 7 and then installed PHP 5.6 I still seem to be running version 7.
Is there a simple method for moving through PHP versions where apache, phpMyAdmin and co are configured appropriately?
A simple way to change the current version of PHP on the fly and even site by site would be great.
-
dibs about 8 yearsI appear to have 5.6 installed but all my php is rendering as text now.
-
storm about 8 yearswhat the output of
dpkg -l | grep php| awk '{print $2}' |tr "\n" " "
? -
dibs about 8 yearsdh-php libapache2-mod-php5 php-common php-json php-pear php-xml php5-cli php5-common php5-json php5-readline php5.6 php5.6-bz2 php5.6-cli php5.6-common 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-common php7.0-json php7.0-xml pkg-php-tools
-
storm about 8 yearsI see some php7 packages there remove them with
aptitude purge php7.0-common php7.0-json php7.0-xml
also I want to know what you mean byall my php is rendering as text now
-
dibs about 8 yearsI've removed the php7 packages, but pages are still text. I seem to be going round in circles at the moment. I will update this page when I get it sorted.
-
Yannick Schneider about 8 yearsit means you miss
libapache2-mod-php5.6
package ... see my answer below, you don't need to removephp7.0
-
variable over 2 yearsAccording to this link (askubuntu.com/a/306555/1516753) isn't it recommended to not install a previous version of PHP on a later version of OS? For example - Ubuntu 16.04 supports PHP 7+.
-
-
ThunderBird about 8 yearsI hope that the fact that you will remove your current php packages and install php freshly will be of great help to you.
-
dibs about 8 yearsI'll give this a go but are the two commands for switching versions supposed to be dismoding both versions of php each time?
-
Yannick Schneider about 8 yearsyou are right, thanks, I have fixed the commands :)
-
oerdnj about 8 yearsYou don't need to do grep-awk magic as all packaged depend on
php5-common
, so simply:apt-get purge php5-common
will purge all php5 packages from your system. -
dibs about 8 yearsThis appears to be the simplest way to deal with this. I like how you can toggle between versions of PHP too
-
John Linhart about 8 years@Postadelmaga It works to change the PHP version for the web apps. Thanks a lot! But the CLI still runs PHP7. Do you know how to switch that to PHP5.6 as well?
-
razor7 about 8 yearsBest way to do it is to remove stock php packages, add Ondrej ppa and then install php7 and php5.6, remember you have phpenmod -v 5.6 to enable a php5.6 module and phpenmod -v 7.0 to enable a php 7.0 module, more info here disqus.com/home/discussion/serversforhackers/…
-
Videonauth about 8 yearsUse
sudo a2dismod php7.0 && sudo a2enmod php5.6 && sudo service apache2 restart
to make sure the following commands are only run when the before one succeeds. Proposed an edit to this answer. -
toesslab about 8 yearsThx for your answer but changing from 5.6 to 7.0 doesn't seem to work, cause when I run
php -v
after restarting apache it still shows 5.6.21 -
Shoaib Nawaz about 8 yearsThe post saved my day.
-
Yannick Schneider about 8 years@Daenu that because php -v is will show you the php cli version ... the command suggested is for Apache ... if you do a
phpinfo()
in a webpage you will see the difference. -
toesslab about 8 yearsAfter writing that comment, I realised that too. Sry I'm a linux newbie.... Thx for that great answer!
-
Amine Jallouli about 8 yearsThis is the best answer for the ones willing to install both
php5.6
andphp7.0
on ubuntu 16.04 -
ToX 82 about 8 yearsI love this solution! Unfortunately, I have tried to do the same with phpbrew with no luck, and while I can run php7.0.6 perfectly and I can switch to 5.6 (there are no errors in the shell when I disable php7 and enable php5), apache seems to be broken with php5 and going to localhost simply doesn't work (unable to reach the website). If I switch back to php7, apache works again. I am not sure this is related to phpbrew, but still I can't use php5...
-
Yannick Schneider about 8 yearsmy guess is that you miss some
php5.6
module try to compare phpinfo between php5.6 and php7.0, check the apache log. -
ToX 82 about 8 yearsThanks for your answer, but the problem is that apache with php5 is not working at all. So no phpinfo. When I switch to php7, boom: phpinfo works immediately. Also no errors in /var/log/apache2/error.log and no errors in the console when switching between the two versions. Don't know if I can look somewhere else...
-
ToX 82 about 8 years@Postadelmaga, it worked by uninstalling both php and apache and reinstalling from scratch. Thanks!
-
myol about 8 yearsCan you elaborate a little on how you would change the FPM unix socket?
-
Jorge Orpinel Pérez almost 8 years
sudo ln -sfn /usr/bin/php5 /etc/alternatives/php
is what I needed. -
Nick almost 8 yearsSome folks need to stop using php5 (vs 5.6)
-
Geoherna almost 8 yearsYou are a god...
-
Yogesh Yadav almost 8 yearsWorked like a charm. I wish I could upvote it multiple times.
-
innovati over 6 yearsBeautiful! I just set up a brand new Debian 9 server on Linode and need to run PHP5 for an app I'm working on. These instructions were perfect as of October 2017 😘👌 Thank you!
-
Abdulla Nilam over 6 yearsvote you for the clear state of switching Apache and CLI
-
davidkonrad about 5 yearsWarning: Using this recipe trashed my entire PHP beyond repair. Hours lost. Using ubuntu 14.04. Just a reminder to you guys: Do not blindly copy paste CLI oneliners without knowing what you are doing!
-
Wolfack over 4 yearsGreat approach, helped me a lot.
-
variable over 2 yearsAccording to this link (askubuntu.com/a/306555/1516753) isn't it recommended to not install a previous version of PHP on a later version of OS? For example - Ubuntu 16.04 supports PHP 7+.
-
variable over 2 yearsAccording to this link (askubuntu.com/a/306555/1516753) isn't it recommended to not install a previous version of PHP on a later version of OS? For example - Ubuntu 16.04 supports PHP 7+.
-
variable over 2 yearsAccording to this link (askubuntu.com/a/306555/1516753) isn't it recommended to not install a previous version of PHP on a later version of OS? For example - Ubuntu 16.04 supports PHP 7+.