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.