32

I am running a WordPress website over LEMP stack server on Ubuntu 18.04 on DigitalOcean. WordPress is recommending me to update my PHP to the latest version.

I am running PHP 7.2.17; Please tell me the safest way to update my PHP to the latest version PHP 7.3.

karel
  • 114,770

2 Answers2

50

Open the terminal and type:

sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php7.3 # The latest version in this repo for 18.04 and 20.04 is currently php7.4.  

The latest version in ppa:ondrej/php for 22.04 is currently php8.2 but php7.4 is also still supported.

php7.3 will be updated automatically when updates become available. Alternatively you can build php7.3 from source in Ubuntu 18.04, but it will not be updated automatically, and it also takes more than an hour to build if you want to test it too.

After installing php7.3 you can show php7.3 modules that can also be installed by running the following command:

apt-cache search php7.3 | grep php7.3  

A quick one-line command to install the same packages on php7.3 as php7.2:

sudo apt install $(apt list --installed | grep php7.2- | cut -d'/' -f1 | sed -e 's/7.2/7.3/g') 
karel
  • 114,770
  • 1
    It works, May i know the source of this repository? According to your answer after adding this repository, php7.3 or any newer version that will come in future will be updated automatically when updates become available. But i want to update it manually because, sometime due to compatibility issue it can break site. So, please guide me to update it manually whenever i want. – Brajmohan Kumar May 25 '19 at 14:02
  • 2
    @karel, please do not add PPA deb-lines blindly, add them with their pages - such as for this case https://launchpad.net/~ondrej/+archive/ubuntu/php . – N0rbert May 25 '19 at 14:04
  • @TechieBraj See How to prevent updating of a specific package? and then just the same as to prevent a package from being updated with sudo apt-mark hold <package-name> you can reverse the process so that the package can be updated again with sudo apt-mark unhold <package-name> – karel May 25 '19 at 14:16
  • Can you revise this answer so that newbies can understand that they also may need to install popular php addons by doing sudo apt-cache search php7.3 | grep php7.3 ? – Volomike Jul 11 '19 at 12:04
  • Also a quick one-liner to install same packages on php7.3 as php7.2. sudo apt install $(apt list --installed | grep php7.2- | cut -d'/' -f1 | sed -e 's/7.2/7.3/g') – Jesper Grann Laursen Sep 29 '19 at 05:04
  • @JesperGrannLaursen Thanks for the comment. It could have been an edit so I made it into one. – karel Sep 29 '19 at 05:10
  • My apache is still using the old version of php, but from command line php version is updated. How can i update version used by apache? – Tobia Dec 12 '19 at 10:00
  • @Tobia Please ask that as a separate question. – karel Dec 12 '19 at 10:06
  • 3
    Another quick liner to completely remove old php7.2 packages: sudo apt purge $(apt list --installed | grep php7.2- | cut -d'/' -f1) – Stalinko Mar 04 '20 at 13:57
  • 1
    And here how to remove warning from apt list output:
    $(apt list --installed 2>/dev/null | grep php7.3- | cut -d'/' -f1 | sed -e 's/7.2/7.3/g' )
    
    – Searge Dec 27 '22 at 10:14
3

From @karel's answer I replace the first command from sudo add-apt-repository ppa:ondrej/php to sudo apt-add-repository ppa:ondrej/php and it works for me. So finally I run:

sudo apt-add-repository ppa:ondrej/php    
sudo apt-get update
sudo apt-get install php7.3