Months after the stable version of PHP 7.0 was released, this could be the right time for you to think of upgrading to it from the old versions.
There is always caution about upgrades especially in a production environment, but it is a good idea now to upgrade so as to enjoy speed improvements, and also features such as scalar type hinting plus many more.

You can install two versions of PHP on your system and use one for testing purposes, but remember that you only enable one PHP Apache modules in a given time.
This guide focuses on upgrading from PHP 5.X, using mod_php in connection with Apache Web server or PHP-FPM in connection with Nginx Web server.
- Install PHP 7 in Ubuntu 14.04 and 14.10
- Upgrading to PHP 7.0 under Apache Web Server
- Upgrading to PHP 7.0 under Nginx Web Server
Now let us dive into how you can upgrade to latest version of PHP and also configure your system to use it.
How to Install PHP 7 in Ubuntu 14.04 and 14.10
First, you will have to add the PPA maintained by Ondřej Surý for Debian and its derivatives such as Ubuntu by running the command below:
$ sudo add-apt-repository ppa:ondrej/php
Next update your system as follows:
$ sudo apt-get update
All is now set, and you can install PHP 7.0, but we shall look at upgrade for Apache and Nginx in different sections.
Upgrading to PHP 7.0 under Apache Web Server
This section is for systems running Apache, where PHP code is executed using mod_php
module. Install the latest PHP version as running the command below:
$ sudo apt-get install php7.0
Sample Output
Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: libapache2-mod-php7.0 libssl1.0.2 php-common php7.0-cli php7.0-common php7.0-json php7.0-opcache php7.0-readline Suggested packages: php-pear The following NEW packages will be installed: libapache2-mod-php7.0 libssl1.0.2 php-common php7.0 php7.0-cli php7.0-common php7.0-json php7.0-opcache php7.0-readline 0 upgraded, 9 newly installed, 0 to remove and 80 not upgraded. Need to get 4,371 kB of archives. After this operation, 17.2 MB of additional disk space will be used. Do you want to continue? [Y/n] y
PHP has now been upgraded on your system, but if you are using MySQL database management system, then you will have to execute the following command to update the PHP-MySQL binding and also you will need to install some useful modules such as Curl, GD, Cli, JSON, etc.
$ sudo apt-get install php7.0-mysql php7.0-cli php7.0-gd php7.0-json
If you want to install additional PHP7.0 modules, you can use apt-cache command to list all PHP7.0 modules and install.
$ sudo apt-cache search php7
Sample Output
php-radius - radius client library for PHP php-http - PECL HTTP module for PHP Extended HTTP Support php-uploadprogress - file upload progress tracking extension for PHP php-mongodb - MongoDB driver for PHP php7.0-common - documentation, examples and common module for PHP libapache2-mod-php7.0 - server-side, HTML-embedded scripting language (Apache 2 module) php7.0-cgi - server-side, HTML-embedded scripting language (CGI binary) php7.0-cli - command-line interpreter for the PHP scripting language php7.0-phpdbg - server-side, HTML-embedded scripting language (PHPDBG binary) php7.0-fpm - server-side, HTML-embedded scripting language (FPM-CGI binary) libphp7.0-embed - HTML-embedded scripting language (Embedded SAPI library) php7.0-dev - Files for PHP7.0 module development php7.0-curl - CURL module for PHP php7.0-enchant - Enchant module for PHP php7.0-gd - GD module for PHP php7.0-gmp - GMP module for PHP php7.0-imap - IMAP module for PHP php7.0-interbase - Interbase module for PHP php7.0-intl - Internationalisation module for PHP php7.0-ldap - LDAP module for PHP php7.0-mcrypt - libmcrypt module for PHP php7.0-readline - readline module for PHP php7.0-odbc - ODBC module for PHP php7.0-pgsql - PostgreSQL module for PHP php7.0-pspell - pspell module for PHP php7.0-recode - recode module for PHP php7.0-snmp - SNMP module for PHP php7.0-tidy - tidy module for PHP php7.0-xmlrpc - XMLRPC-EPI module for PHP php7.0-xsl - XSL module for PHP (dummy) php7.0 - server-side, HTML-embedded scripting language (metapackage) php7.0-json - JSON module for PHP php-all-dev - package depending on all supported PHP development packages php7.0-sybase - Sybase module for PHP php7.0-sqlite3 - SQLite3 module for PHP php7.0-mysql - MySQL module for PHP php7.0-opcache - Zend OpCache module for PHP php-apcu - APC User Cache for PHP php-xdebug - Xdebug Module for PHP php-imagick - Provides a wrapper to the ImageMagick library php-ssh2 - Bindings for the libssh2 library php-redis - PHP extension for interfacing with Redis php-memcached - memcached extension module for PHP, uses libmemcached php-apcu-bc - APCu Backwards Compatibility Module php-amqp - AMQP extension for PHP php7.0-bz2 - bzip2 module for PHP php-rrd - PHP bindings to rrd tool system php-uuid - PHP UUID extension php-memcache - memcache extension module for PHP php-gmagick - Provides a wrapper to the GraphicsMagick library php-smbclient - PHP wrapper for libsmbclient php-zmq - ZeroMQ messaging bindings for PHP php-igbinary - igbinary PHP serializer php-msgpack - PHP extension for interfacing with MessagePack php-geoip - GeoIP module for PHP php7.0-bcmath - Bcmath module for PHP php7.0-mbstring - MBSTRING module for PHP php7.0-soap - SOAP module for PHP php7.0-xml - DOM, SimpleXML, WDDX, XML, and XSL module for PHP php7.0-zip - Zip module for PHP php-tideways - Tideways PHP Profiler Extension php-yac - YAC (Yet Another Cache) for PHP php-mailparse - Email message manipulation for PHP php-oauth - OAuth 1.0 consumer and provider extension php-propro - propro module for PHP php-raphf - raphf module for PHP php-solr - PHP extension for communicating with Apache Solr server php-stomp - Streaming Text Oriented Messaging Protocol (STOMP) client module for PHP php-gearman - PHP wrapper to libgearman php7.0-dba - DBA module for PHP
Once PHP7.0 and its modules installed, you can restart your Apache web server and verify the PHP version as shown:
$ sudo service apache2 restart $ php -v
Sample Output
PHP 7.0.7-1+donate.sury.org~trusty+1 (cli) ( NTS ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
You can also verify PHP7 information by creating a info.php
file under /var/www/html directory.
$ sudo vi /var/www/html/info.php
Place following code and access the page via http://server_IP-address/info.php
.
<?php phpinfo(); ?>

Upgrading to PHP 7.0 under Nginx Web Server
This section takes you through the process of upgrading to PHP7.0 and updating PHP-FPM with Nginx Web server, where PHP code is executed using PHP-FPM.
Run the command below to install the latest PHP-FPM packages:
$ sudo apt-get install php7.0 $ sudo apt-get install php7.0-fpm
PHP has now been upgraded, but if you are using MySQL, then you will have to execute the following command to update the PHP-MySQL binding and some additional modules as shown:
$ sudo apt-get install php7.0-mysql php7.0-cli php7.0-gd php7.0-json
Next, you need to append the fastcgi_pass
directive in the file /etc/nginx/sites-enabled/default or all files for your virtual sites that have to use and support PHP, since the path of the PHP-FPM socket file that PHP uses to communicate with Nginx has changed.
Use your favorite editor and open the file for editing as follows:
$ sudo vi /etc/nginx/sites-enabled/default
Modify or append as follows:
location ~ [^/]\.php(/|$) { fastcgi_split_path_info ^(.+?\.php)(/.*)$; if (!-f $document_root$fastcgi_script_name) { return 404; } fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_index index.php; include fastcgi_params; }
Then restart Nginx and php-fpm as follows:
$ sudo service nginx restart $ sudo service php7.0-fpm restart
Lastly, you can test whether PHP is working or not by first checking the your PHP version and then testing it with the Web server.
$ php -v
You get information about your PHP packages by writing a small info.php file under /usr/share/nginx/html/ directory:
$ sudo vi /usr/share/nginx/html/info.php
Put this code on your info.php file:
<?php phpinfo(); ?>
Save and exit the file.
Open your web browser, enter http://server_IP-address/info.php
and you should be able to see the page below which shows you details about your PHP package.

You can now happily use PHP 7.0 on your Ubuntu 14.04/14.10 system, and I hope you find this guide helpful.
For any additional information concerning upgrading PHP or questions, your comments are welcome in the comment section below.
Can we install php7.2 on ubuntu 14.04?
@Gulab,
Yes, you can install PHP 7 on Ubuntu 14.04 using the following commands.
I want php7.2
@Gulab,
Here are the commands to install PHP 7.2 on Ubuntu 14.04.
if you want PHP 7.3 or 7.4, just replace the php7.2 with php7.3 or php7.4.
not working
Traceback (most recent call last):
File “/usr/lib/python3.4/threading.py”, line 920, in _bootstrap_inner
self.run()
File “/usr/lib/python3.4/threading.py”, line 868, in run
self._target(*self._args, **self._kwargs)
File “/usr/lib/python3/dist-packages/softwareproperties/SoftwareProperties.py”, line 687, in addkey_func
func(**kwargs)
File “/usr/lib/python3/dist-packages/softwareproperties/ppa.py”, line 370, in add_key
return apsk.add_ppa_signing_key()
File “/usr/lib/python3/dist-packages/softwareproperties/ppa.py”, line 261, in add_ppa_signing_key
tmp_export_keyring, signing_key_fingerprint, tmp_keyring_dir):
File “/usr/lib/python3/dist-packages/softwareproperties/ppa.py”, line 210, in _verify_fingerprint
got_fingerprints = self._get_fingerprints(keyring, keyring_dir)
File “/usr/lib/python3/dist-packages/softwareproperties/ppa.py”, line 202, in _get_fingerprints
output = subprocess.check_output(cmd, universal_newlines=True)
File “/usr/lib/python3.4/subprocess.py”, line 609, in check_output
output, unused_err = process.communicate(inputdata, timeout=timeout)
File “/usr/lib/python3.4/subprocess.py”, line 947, in communicate
stdout = _eintr_retry_call(self.stdout.read)
File “/usr/lib/python3.4/subprocess.py”, line 491, in _eintr_retry_call
return func(*args)
File “/usr/lib/python3.4/encodings/ascii.py”, line 26, in decode
return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xc5 in position 92: ordinal not in range(128)
I think the environment does not support php7.2 in ubuntu 14.04
@Gulab,
Then you need to upgrade your Ubuntu.
Thank you very much, this article really helped me a lot in the installation of all these services
@f4b1
Welcome, and good to know this, many thanks for following us and for the useful feedback.
Hi, in my case not render the files .php, downloaded the files ( i don’t know the problem, help me).