Running PHP8.2 with Nginx on Ubuntu
PHP is a general-purpose scripting language geared towards web development. PHP code is usually processed on a web server by a PHP interpreter implemented as a module, a daemon or as a Common Gateway Interface (CGI) executable.
By default Nginx is not capable of processing dynamic web pages with PHP so it requires the use of specific additional plugins for this purpose. One of these plugins is FPM (FastCGI Process Manager). FPM is an alternative PHP FastCGI implementation with some additional features (mostly) useful for heavy-loaded sites. It is the preferred method of processing PHP pages with Nginx and is faster than traditional CGI based methods.
You will need a working Nginx setup. If you do not already have one, take a look to our Nginx installation and configuration tutorial to get your server ready.
Uninstalling old PHP versions
If you have installed another version of PHP we recommend to uninstall it executing the following command:
sudo apt-get purge php8.*
The example command shows how to uninstall PHP8 and related packages. Adjust the version number to the one you have installed on your computer.
Installing PHP8.2 FPM
At the time of writing this tutorial PHP 7.4 is the default PHP version in Ubuntu repositories. To install the latest version of PHP, we are going to use the Ondrej PPA repositories. This repository contains multiple PHP versions and PHP extensions. Add the Ondrej PPA:
sudo add-apt-repository ppa:ondrej/php
When prompted, press ENTER to proceed with adding the repository.
Then, update Ubuntu system packages and install dependencies as shown:
sudo apt-get update && sudo apt-get install ca-certificates apt-transport-https software-properties-common
Now, with the PPA included, you can install PHP 8.2. The command will also download all the missing dependencies:
sudo apt-get install php8.2-fpm
Finally, to check the correct installation ask for the version of PHP:
The output will be similar to the following image and show the installed version on your machine.
Installing PHP8.2 extensions
To list all loaded extensions run the following command:
The command to install PHP 8.2 extensions is:
sudo apt install php8.2-<extension>
You just need to replace extension with the one you want to install, e.g., mysql, curl, gd, xml, etc... Extensions available by default are the listed below:
Enabling PHP8.2 on Nginx server
Now that you have PHP-FPM installed, you will need to enable it updating Nginx configuration file:
sudo nano /etc/nginx/sites-available/default
Note: we are using nano editor but feel free to use your preferred one.
Following lines, as shown, enable PHP-FPM on your Nginx server.
Usually these directives are included but commented in the default configuration file. You will need to locate and uncomment them. Don't forget to add the index.php to the indexes list in the same file:
Save everything and restart Nginx server to apply changes:
sudo systemctl restart nginx.service
We have successfully configured an Nginx server with PHP-FPM. Enjoy hosting your project on it.