New Post
Since this post is now a few months old – PHP 7.2 is now out. Click the link below to read my new version about upgrading to PHP7.2
https://jakelprice.com/article/php-70-to-php-72-how-to-upgrade-your-server
Original Post
I use DigitalOcean as the host for my servers due to the ease of getting a servers up and running and the great prices they offer. For even more ease of use, they also offer One-Click Apps which I use to get a LAMP server on Ubuntu 16.04 without worrying about installation and configuration of all the software needed. The only issue I have at the moment (not due to DigitalOcean!) is that Ubuntu 16.04 only has access to PHP 7.0 in default apt-get repos.
PHP 7.1 is out now though, and Laravel 5.5 needs it to be installed (thanks to a Doctrine package), so lets install it! For this how-to, I am using a clean droplet freshly created.
Add Ondrejs PPA Repo
PPA’s or Personal Package Archive, is a collection of software not included in Ubuntu by default. Typically these repositories focus on a single program, but they can include more depending on the person maintaining them. Ondřej Surý has created this PPA which has the latest versions of PHP in it. Lets add it to your system, and update to get a list of all the software we can install.
$ sudo add-apt-repository ppa:ondrej/php
$ sudo apt-get update
Install PHP 7.1
Lets stop our server first, then install PHP 7.1.
$ service apache2 stop
$ sudo apt-get install php7.1 php7.1-common
We’ll also install some extra packages for our PHP installation – these are needed for Laravel and Composer!
$ sudo apt-get install php7.1-curl php7.1-xml php7.1-zip php7.1-gd php7.1-mysql php7.1-mbstring
Once that is done, lets check PHP is updated on the CLI
$ php -v
If the first row looks like this, we’ve done good so far! PHP 7.1.11-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Oct 27 2017 13:49:56) ( NTS )
Remove PHP 7.0
Now we have PHP7.1, lets get rid of PHP7.0
$ sudo apt-get purge php7.0 php7.0-common
Once this has been done, I usually restart the server.
$ sudo shutdown -r now
Make PHP7.1 used by Apache
Finally, we need to tell Apache to use PHP7.1 now PHP 7.0 is not being used. Lets enable the PHP mod!
$ a2enmod php7.1
$ service apache2 restart
Thats it – PHP should now be using PHP 7.1 – enjoy your amazing new features such as function return types and multiple error catch’s! If you are having issues, feel free to prod me on Twitter at @JakeLPrice