Question

How to upgrade from PHP v.5.5.9 to v.5.6

Posted September 30, 2014 236.3k views

I just deployed a new droplet. By default, it’s set up with PHP 5.5.9. I would like to upgrade that to v.5.6.

How do I do this?

Thanks in advance.

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

×
11 answers

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install php5.6 php5.6-mbstring php5.6-mcrypt php5.6-mysql php5.6-xml
sudo a2dismod php5
sudo a2enmod php5.6
sudo service apache2 restart

To upgrade to a newer version of PHP 5.6 on Ubuntu 14.04, you can use Ondřej Surý’s PPA. He is one of the Debian maintainers of the php5 package. To add the PPA and upgrade your packages, run:

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php5-5.6
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install php5

Though remember to be careful when doing an upgrade of PHP outside of the normal distro repositories, some of the additional modules that you might rely on could be missing for that version.

  • Hi, Is it normal that on the phpinfo(); header we have PHP Version 5.6.10-1+deb.sury.org~trusty+1? It’s weird.

  • @FelixINX The header will display the full package version string. 5.6.10 is the upstream PHP version number while 1+deb.sury.org~trusty+1 is the Debian packaging version.

  • Hi,

    After the second command I get the following error:

    UnicodeDecodeError: 'ascii' codec can't decode byte 0xc5 in position 92: ordinal not in range(128)
    

    This is something with the locales I guess.
    This is what I get when doing locale:

    locale: Cannot set LC_CTYPE to default locale: No such file or directory
    locale: Cannot set LC_ALL to default locale: No such file or directory
    LANG=en_US.UTF-8
    LANGUAGE=
    LC_CTYPE=UTF-8
    LC_NUMERIC="en_US.UTF-8"
    LC_TIME="en_US.UTF-8"
    LC_COLLATE="en_US.UTF-8"
    LC_MONETARY="en_US.UTF-8"
    LC_MESSAGES="en_US.UTF-8"
    LC_PAPER="en_US.UTF-8"
    LC_NAME="en_US.UTF-8"
    LC_ADDRESS="en_US.UTF-8"
    LC_TELEPHONE="en_US.UTF-8"
    LC_MEASUREMENT="en_US.UTF-8"
    LC_IDENTIFICATION="en_US.UTF-8"
    LC_ALL=
    

    I tried everything I can find, mainly about setting locales, but nothing seems to be the solution. I also tried it on Ubuntu 14.04 on the RaspberryPi, but it got the same problems.

    It would be great if you could help me with this!

    I am running Ubuntu 14.04 with Apache 2.4.7 (Apache/2.4.7 (Ubuntu)) and PHP 5.5.9 (PHP 5.5.9-1ubuntu4.5 (cli))

  • PPA has a new repository

    sudo add-apt-repository ppa:ondrej/php5-5.6
    

    is being DEPRECATED. use

    sudo add-apt-repository ppa:ondrej/php
    

    Also, when installing, use

    sudo apt-get install php5.6 php5.6-fpm php5.6-xml ...
    
    • Thanks have this installed, but my server is now using both 5.6 and 5.5, php info shows 5.5, is there anyway to get this to point to 5.6

  • I do not install php5-mbstring.
    Help me please!

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install -y php5.6 php5.6-mcrypt php5.6-mbstring php5.6-curl php5.6-cli php5.6-mysql php5.6-gd php5.6-intl php5.6-xsl php5.6-zip libapache2-mod-php5.6

sudo a2dismod php5
sudo a2enmod php5.6
sudo service apache2 restart

note that if you are using NGINX and not Apache, this needs to be changed to avoid apache being loaded as part of the install. According to the maintainer of the ppa, the correct approach is to replace

sudo apt-get install php5

with

sudo apt-get install php5 php5-fpm

in the provided sequence of commands

I have an eCommerce site set-up and running on my DO droplet. I want to upgrade this software however, upgrade requirements state that I should also upgrade to PHP 5.6. While it’s not clear as to why this software now needs PHP 5.6, I did notice an issue with how my droplet reports which version of PHP it’s using.

I now see “PHP Version 5.6.23-1+deprecated+dontuse+deb.sury.org~trusty+1” when hitting my phpinfo.php page. However, when I invoke “php -v” on the command line, I see:
PHP 7.0.8-4+deb.sury.org~trusty+1 (cli) ( NTS ).

I believe 5.5.x, 5.6.x, and 7.0.x versions of PHP can all live together on the same server, how do I ensure Apache is serving up my site with a non-deprecated version of PHP 5.6?

Please note that phpinfo shows my loaded configuration file is /etc/php5/apache2/php.ini so that seems correct.

LAMP stack versions:

  • Ubuntu 14.04.4 LTS (GNU/Linux 4.4.0-28-generic x86_64)
  • Apache 2.4.7
  • MySQL 14.14 Distrib 5.5.49, for debian-linux-gnu (x86_64) using readline 6.3
  • PHP 7.0.8-4+deb.sury.org~trusty+1 (cli) ( NTS ) Copyright © 1997-2016 The PHP Group Zend Engine v3.0.0, Copyright © 1998-2016 Zend Technologies with Zend OPcache v7.0.8-4+deb.sury.org~trusty+1

Is there an easier way to enforce which version of PHP my server utilizes?

Thank you,
_rs

I followed your instructions but keep getting
E: Couldn’t find any package by regex ‘php5.6’

How to fix this?

I have followed this guide but seem to have run into problems:

I did the following:

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install php5.6

Now what seems to have happened is when I check phpinfo.php it is using 5.5.9 but the cli is using 5.6.24

When I use composer install, It seems all my extensions (intl, mbstring, zip etc..) are not installed. I am a bit lost and would really appreciate any advice :-)

Thanks

Aaron

I am using NGINX but in the info.php the version is: 5.5.9

and in the cli I have: php-fpm5.6 and php-fpm
¿how do I choose the correct version to load with nginx?

I have a problem as I updated my php version to 5.6 from 5.5.
Server:

  • OS: Ubuntu 14.04.1 LTS.
  • Server version: Apache/2.4.7 (Ubuntu).
  • PHP version: 5.5.
  • Laravel 4.2 with yajra package.

I have done the following steps:

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install php5.6 php5.6-mbstring php5.6-mcrypt php5.6-mysql php5.6-xml
sudo a2dismod php5
sudo a2enmod php5.6
sudo service apache2 restart

After that, I checked oci8 extensions:

cat /etc/php5/cli/php.ini | grep extension=oci8 => exists
cat /etc/php5/apache2/php.ini | grep extension=oci8 => exists

But the following errors occurs when I load my web on the browser.
2017-01-09 20:13:54] production.ERROR: exception ‘Symfony\Component\Debug\Exception\FatalErrorException’ with message 'Call to undefined function Yajra\Pdo\oci_connect()’ in /var/www/****/vendor/yajra/laravel-pdo-via-oci8/src/Pdo/Oci8.php:449

How to solve this problem? Is there any idea, please…

I’m using NGINX and I’m facing this problem too

Submit an Answer