182

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.

7
  • I appear to have 5.6 installed but all my php is rendering as text now.
    – dibs
    Apr 24, 2016 at 10:49
  • what the output of dpkg -l | grep php| awk '{print $2}' |tr "\n" " " ?
    – storm
    Apr 24, 2016 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, 2016 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, 2016 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 Apr 25, 2016 at 3:00

4 Answers 4

342

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
      
24
  • 2
    you are right, thanks, I have fixed the commands :) Apr 25, 2016 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? Apr 26, 2016 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, 2016 at 14:46
  • 7
    The post saved my day. May 7, 2016 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. May 8, 2016 at 0:43
52

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.

6
  • 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, 2016 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 May 14, 2016 at 11:26
  • 1
    Worked like a charm. I wish I could upvote it multiple times. Sep 30, 2016 at 20:32
  • According 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
    Nov 3, 2021 at 12:11
  • Oh, @variable, wouldn't it be nice to stick with that recommendation! The problem is when you are at your job, and someone needs you to fix a web app that was written 5-6 years ago. Trying to rewrite everything in the latest php would take much longer than your boss is willing to pay you for. You have a family, so you don't have any time to "volunteer". That makes you grateful that people like Ondrej keep these PPAs up and running, so e.g. the Phalcon 5.4 that runs only on PHP 5.6 can be used, you rock it with the job you love, and your boss is happy with you. Jun 1, 2023 at 23:19
12

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
  • 3
    Can you elaborate a little on how you would change the FPM unix socket?
    – myol
    Jun 14, 2016 at 13:48
6

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
4
  • I hope that the fact that you will remove your current php packages and install php freshly will be of great help to you. Apr 24, 2016 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, 2016 at 10:09
  • According 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
    Nov 3, 2021 at 12:11
  • @variable, look at this comment in response to your identical comment. Jun 1, 2023 at 23:30

Not the answer you're looking for? Browse other questions tagged .