How to Install PHP 8 on Ubuntu 20.04/18.04
How to install PHP 8 on Ubuntu 20.04?
This tutorial will take you step by step to install the latest PHP 8 version or upgrade to the latest on your Ubuntu 20.04 or 18.04 systems or also your Ubuntu server. Next, you’ll see how to configure it with Apache and Nginx.
PHP 8 is officially released on November 26th, 2020. It brings several new features and improvements that will make your life easier as a programmer
Prerequisites
Before you can continue with this tutorial, you’ll need to have the following prerequisites:
- A Ubuntu server with
sudo
privileges.
Updating your Ubuntu System Packages
First, you need to update your Ubuntu server with the latest packages by using the following command:
sudo apt update
sudo apt upgrade
This will update the package index and update the installed packages to the latest version.
Adding a PPA for PHP 8
Next, you need to use a PPA for PHP 8. Head back to your terminal and add the ondrej/php
which contains the latest PHP 8 package and compatible PHP extensions:
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update
Now you are ready to install PHP 8.
Installing PHP 8 for Apache Server
Let’s now see how to install PHP 8
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
Installing 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
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
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