If you are running an older version of Ubuntu, chances are you have either PHP 7.2 or 7.3 running. PHP 7.2 was originally released on November 30, 2017, and stopped receiving active support on November 30, 2019 meaning known security issues will not be fixed. It’s therefore important to upgrade.
By default, older versions of Ubuntu have the packages for PHP 7.4, so here’s how to upgrade.
Add PPA for PHP 7.4
Add the ondrej/php which has PHP 7.4 package and other required PHP extensions.
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update
Once you have added the PPA you can install PHP 7.4.
Install PHP 7.4 for Apache
Execute the following command to install PHP 7.4
sudo apt install php7.4
Install PHP 7.4 Extensions
Installing PHP extensions are simple with the following syntax.
sudo apt install php7.4-extension_name
Now, install some commonly used php-extensions with the following command.
sudo apt install php7.4-common php7.4-mysql php7.4-xml php7.4-xmlrpc php7.4-curl php7.4-gd php7.4-imagick php7.4-cli php7.4-dev php7.4-imap php7.4-mbstring php7.4-opcache php7.4-soap php7.4-zip php7.4-intl -y
After the installation has completed, you can confirm the installation using the following command
Enable PHP 7.4 for Apache
Now you need to tell Apache to use the installed version of PHP 7.4 by disabling the old PHP module (below I have mentioned php7.0, you need to use your current php version used by Apache) and enabling the new PHP module using the following command.
sudo a2dismod php7.0
sudo a2enmod php7.4
Restart Apache for the changes to take effect.
sudo service apache2 restart
Install PHP 7.4 FPM for Nginx
For Nginx you need to install FPM, execute the following command to install PHP 7.4 FPM
sudo apt install php7.4-fpm
Follow the same method above mentioned to install the extensions
After the installation has completed, confirm that PHP 7.4 FPM has installed correctly with this command
Modify Nginx configuration to use PHP 7.4
For Nginx you need to update the PHP-FPM socket in your Nginx configration located inside the sites-available directory. This will be located inside the location block location ~ \.php$
Edit your configuration…
sudo nano /etc/nginx/sites-available/your.conf
The line you need to modify will look like this…
You need to replace the old PHP version with the new version.
Test your configration.
sudo nginx -t
Save the file and exit the editor and restart Nginx for the changes to take effect.
sudo service nginx restart
Configure PHP 7.4
Now we configure PHP for Web Applications by changing some values in php.ini file.
For PHP 7.4 with Apache the php.ini location will be in following directory.
sudo nano /etc/php/7.4/apache2/php.ini
For PHP 7.4 FPM with Nginx the php.ini location will be in following directory.
sudo nano /etc/php/7.4/fpm/php.ini
Hit F6 for search inside the editor and update the following values for better performance.
upload_max_filesize = 32M
post_max_size = 48M
memory_limit = 256M
max_execution_time = 600
max_input_vars = 3000
max_input_time = 1000
Once you have modified your PHP settings you need to restart your Apache for the changes to take effect.
Configure PHP 7.4 FPM Pools
PHP 7.4 FPM allows you to configure the user and group that the service will run under. You can modify these with these commands
sudo nano /etc/php/7.4/fpm/pool.d/www.conf
Change the following lines by replacing the www-data with your username.
user = username
group = username
listen.owner = username
listen.group = username
Hit CTRL+X and Y to save the configuration and check if the configuration is correct and restart PHP.
Restart PHP 7.4 FPM
Once you have updated your PHP FPM settings you need to restart it to apply the changes.
sudo php-fpm7.4 -t
sudo service php7.4-fpm restart