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.

marked as duplicate by muru, Kevin Bowen, Eric Carvalho, David Foerster, Videonauth May 14 '16 at 9:37

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

  • I appear to have 5.6 installed but all my php is rendering as text now. – dibs Apr 24 '16 at 10:49
  • what the output of dpkg -l | grep php| awk '{print $2}' |tr "\n" " " ? – storm Apr 24 '16 at 10:57
  • dh-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 – dibs Apr 24 '16 at 11:05
  • I 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 by all my php is rendering as text now – storm Apr 24 '16 at 11:22
  • 2
    it means you miss libapache2-mod-php5.6 package ... see my answer below, you don't need to remove php7.0 – Postadelmaga Apr 25 '16 at 3:00
up vote 291 down vote accepted

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
      
  • 2
    you are right, thanks, I have fixed the commands :) – Postadelmaga Apr 25 '16 at 5:20
  • 2
    @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? – John Linhart Apr 26 '16 at 13:39
  • 1
    Best 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/… – razor7 Apr 26 '16 at 14:46
  • 7
    The post saved my day. – Shoaib Nawaz May 7 '16 at 11:39
  • 1
    @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. – Postadelmaga May 8 '16 at 0:43

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.

  • 1
    Use 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. – Videonauth May 2 '16 at 10:30
  • 1
    This is the best answer for the ones willing to install both php5.6 and php7.0 on ubuntu 16.04 – Amine Jallouli May 14 '16 at 11:26
  • 1
    Awesome! It worked! – PJunior Jul 6 '16 at 21:55
  • 1
    Worked like a charm. I wish I could upvote it multiple times. – shiva Sep 30 '16 at 20:32

Your question lacks important details, so I will answer more broadly.

Assuming you are using packages, there are some important details:

  1. Apache2 can be configured to use either apache2 SAPI using libapache2-mod-php7.0 package or FPM SAPI using php7.0-fpm with mod_proxy_fcgi.

  2. 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 or php5.6-fpm).

  3. If you are using Apache2 SAPI (libapache2-mod-php*), you need to disable PHP 7.0 after you install libapache2-mod-php5.6 by running a2dismod php7.0 and enable PHP 5.6 by running a2enmod php5.6.

  4. 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.

  5. Please remember that for modules bundled with PHP (like MySQL) the naming convention is phpX.Y-<ext> (f.e. php7.0-mysql and php5.6-mysql), but for external PECL modules (f.e. APCu, mongodb, ...) it's just php-<ext> (f.e. php-apcu, php-mongodb). I recommend running apt-cache search php <ext> on your system to search for correct package name before asking a questions on the Internet.

  • 1
    Can you elaborate a little on how you would change the FPM unix socket? – myol Jun 14 '16 at 13:48

I think you should remove your php packages and install php5.6. You can proceed as follows:

sudo aptitude purge dpkg -l | grep php| awk '{print $2}' |tr "\n" " "
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
  • I hope that the fact that you will remove your current php packages and install php freshly will be of great help to you. – Yufenyuy Veyeh Dider Apr 24 '16 at 9:42
  • 3
    You 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. – oerdnj Apr 25 '16 at 10:09

Not the answer you're looking for? Browse other questions tagged or ask your own question.