AWS Google Cloud

How to Install PHP 8 on Ubuntu 20.04

Install PHP 8 on Ubuntu 20.04. This guide let you learn how install the latest PHP version 8 and upgrade to latest on your Ubuntu 20.04 or 18.04 systems or your Ubuntu server on any VPS or any Cloud or any Dedicated hosting and configure it with Apache and Nginx.

The latest PHP 8 is officially released on November 26th, 2020. It comes with a number of new features and a few incompatibilities that you should be aware of before upgrading from the previous version.

This installation is tested on Google Cloud Platform with a Compute Compute Engine VM Instance. This set up will work on all Linux servers.

Best Hosting for your Business

PlatformReviewsPricing
Cloudways★★★★★$10
Kinsta – Google Cloud★★★★★$30

Prerequisites

  1. A Ubuntu server set up with sudo privileges.
  2. Completed the initial Ubuntu server setup.

If you are using Google Cloud Platform to install PHP you need the following steps to be done.

  1. A running Compute Engine, see the Setting up Compute Engine Instance with Ubuntu 20.04.

Getting Started

Make sure your Ubuntu server is having the latest packages by running the following command.

sudo apt update
sudo apt upgrade

This will update the package index and update the installed packages to the latest version.

Add PPA for PHP 8

Add the ondrej/php which has PHP 8 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 8.

Install PHP 8 for Apache

Execute the following command to install PHP 8

sudo apt install php8.0

After the installation has completed, you can confirm the installation using the following command

php -v

Install PHP 8 FPM for Nginx

For Nginx you need to install FPM, execute the following command to install PHP 8 FPM

sudo apt install php8.0-fpm

After the installation has completed, confirm that PHP 8 FPM has installed correctly with this command

php-fpm8.0 -v

Install PHP 8 Extensions

Installing PHP extensions are simple with the following syntax.

sudo apt install php8.0-extension_name

Now, install some commonly used php-extensions with the following command.

sudo apt install php8.0-common php8.0-mysql php8.0-xml php8.0-curl php8.0-gd php8.0-imagick php8.0-cli php8.0-dev php8.0-imap php8.0-mbstring php8.0-opcache php8.0-soap php8.0-zip -y

Configure PHP 8 for Apache

Now we configure PHP for Web Applications by changing some values in php.ini file.

For PHP 8 with Apache the php.ini location will be in following directory.

sudo nano /etc/php/8.0/apache2/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 8 for Nginx

For PHP 8 FPM with Nginx the php.ini location will be in following directory.

sudo nano /etc/php/8.0/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 PHP FPM for the changes to take effect.

sudo php-fpm8.0 -t 
sudo service php8.0-fpm restart

Configure PHP 8 FPM Pools – Nginx

PHP 8 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/8.0/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 8.0 FPM – Nginx

Once you have updated your PHP FPM settings you need to restart it to apply the changes.

sudo php-fpm8.0 -t 
sudo service php8.0-fpm restart

Now you are having PHP 8 Installed and configured.

Become a Linux System Administrator and maintain virtual servers in a multi-user environment.

Upgrade to PHP 8 for Apache

Once you have installed PHP 8 you need to upgrade to the latest installed version of PHP.

You need to disable the old PHP version and enable the new PHP version 8.

sudo a2dismod php7.4 

This command will disable the PHP 7.4 module.

sudo a2enmod php8.0

This command will enable the PHP 8 module.

Now you need to restart Apache for the changes to take effect.

sudo service apache2 restart

Upgrade to PHP 8 for Nginx

For Nginx you need to update the PHP-FPM socket in your Nginx configuration 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…

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

You need to replace the old PHP version with the new version.

fastcgi_pass unix:/run/php/php8.0-fpm.sock;

Test your configuration and restart Nginx.

sudo nginx -t
sudo service nginx restart

Conclusion

Now you have learned how to install PHP 8 and upgrade your configuration on your Ubuntu server.

Thanks for your time. If you face any problem or any feedback, please leave a comment below.

Cloudbooklet builds a large collection of Linux based guides and tutorials on Cloud platforms like Google Cloud, AWS, Azure, DigitalOcean and more

3 Comments

  1. Thanks! I’ve bought you a coffee 😉

    Things have moved quickly; I didn’t have to add the ondrej/php PPA.

    One slight suggestion: It wasn’t clear to me whether the sections titled “Configure PHP 8 FPM Pools” and “Restart PHP 8.0 FPM” were Nginx-only. Since I’m using Apache2, I skipped them, but wondered if that was why I had trouble with Apache2 sticking with PHP7.4 even after multiple “sudo a2dismod php7.4” and apache restarts. (I fixed the problem by finding guidance elsewhere on how to completely remove PHP7.x from my system.) Perhaps everybody else already knows that FPM is Nginx-only.

    • Hi thank you so much for the coffee.

      Thank you so much for the suggestion. I will update the heading and let everyone know that the mentioned steps are for Nginx only

Write A Comment

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.