I’ve been going over the community questions and I’ve noticed one constant theme. Every now and then a question regarding the upgrade of a PHP version appears.

As such I’ve decided to create this question so it can be easily found and it’s universal, at least for Ubuntu-based droplets using Nginx.

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.

×
Submit an Answer
1 answer

The first thing I want to mention is, you can’t directly upgrade a PHP version from let’s say 7.1 to 7.4. Having said that you can install a new one and start using it.

Firstly, to be able to install a certain PHP version, in this case, 742 you’ll need to add a certain repository to your system

sudo apt-add-repository ppa:ondrej/php

Update the repository index.

sudo apt update

Install PHP 7.4 with the below command.

sudo apt install -y php7.4 php7.4-cli php7.4-common php7.4-fpm

To install extensions run

sudo apt install -y php7.4-mysql php7.4-dom php7.4-simplexml php7.4-ssh2 php7.4-xml php7.4-xmlreader php7.4-curl  php7.4-exif  php7.4-ftp php7.4-gd  php7.4-iconv php7.4-imagick php7.4-json  php7.4-mbstring php7.4-posix php7.4-sockets php7.4-tokenizer

The above is the required extensions for a WordPress installation that’s why I’m posting them. Having said that it’s good to have these extensions as well.

sudo apt install -y php7.4-mysqli php7.4-pdo  php7.4-sqlite3 php7.4-ctype php7.4-fileinfo php7.4-zip php7.4-exif

That’s it, you now have your new PHP version installed.

Now we need to make it a default for your Droplet and Application.

sudo nano /etc/php/7.4/fpm/php.ini

Find: cgi.fix_pathinfo. Remove semi-colon and set 0

cgi.fix_pathinfo=0

Save the file, exit, and execute

sudo systemctl restart php7.4-fpm

Next configure Nginx to use the new PHP we installed

sudo nano /etc/nginx/sites-available/default

Find the block

location ~ \.php$ {
....
fastcgi_pass unix:/run/php/php7.0-fpm.sock; ---- Remove this line by commenting '#'

fastcgi_pass unix:/run/php/php7.4-fpm.sock;
}

Save the file, exit, and execute

sudo nginx -t
sudo systemctl reload nginx

You can now test php by using phpinfo() function or use php -v command into the terminal.