Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save valiantboymaksud/6cf12792b1b21dcb6566710d6f1b42c4 to your computer and use it in GitHub Desktop.
Save valiantboymaksud/6cf12792b1b21dcb6566710d6f1b42c4 to your computer and use it in GitHub Desktop.
All About PHP in Ubuntu 20.04
1 Add the Ondrej PPA Repository
PHP 7.4 is the default PHP version in Ubuntu 20.04 repositories at the time of writing this tutorial. We will use the Ondrej PPA repositories to install the latest version of PHP. This repository contains multiple PHP versions and PHP extensions.
First, let’s update your Ubuntu system packages and install some dependencies as shown below.
$ sudo apt update
$ sudo apt upgrade
# Allow apt to use the repository via HTTPS
$ sudo apt install ca-certificates apt-transport-https
$ sudo apt install software-properties-common
Next, add the Ondrej PPA.
$ sudo add-apt-repository ppa:ondrej/php
When prompted, press ENTER to proceed with adding the repository.
2 Install PHP 8.1 with Nginx
If you'd like to use PHP 8.1 with Nginx installation, the most recommended step is to install PHP-FPM to process PHP files. You can install PHP and PHP-FPM using the following command:
$ sudo apt install php8.1 php8.1-fpm
The PHP-FPM service should start automatically. You can verify this as shown:
$ sudo systemctl status php8.1-fpm
For Nginx to process PHP files, configure your Nginx server block by updating the server section as shown:
server {
# ... some other code
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
}
Finally, restart the Nginx web server for the changes to take effect.
$ sudo systemctl restart nginx
3 Install PHP 8.1 Extensions
PHP extensions are libraries that extend the functionality of PHP. These extensions exist as packages and can be installed as follows:
$ sudo apt install php8.1-[extension-name]
For instance, the example below installs the MySQL extensions.
$ sudo apt install php8.1-mysql
4 Configure PHP 8.1 (Optional)
Now we configure PHP for web applications by changing some values in the php.ini file. For PHP 8.1 FPM with Nginx, the php.ini location will be in the following directory.
sudo nano /etc/php/8.1/fpm/php.ini
Hit F6 to 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 PHP-FPM for the changes to take effect.
sudo service php8.1-fpm restart
5 Testing PHP Processing
To confirm the version of PHP installed, run the command:
$ php -v
Additionally, you can create a sample PHP file at /var/www/html as shown:
$ sudo vim /var/www/html/info.php
Paste the following lines and save the file.
<?php
phpinfo();
?>
Finally, go to your browser and browse the server’s IP address as shown.
http://server-ip/info.php
You should get the webpage shown.
6 Other operations
1.1 Install multiple versions of PHP
$ sudo apt install php7.4 php7.4-fpm
$ sudo apt install php8.0 php8.0-fpm
1.2 Check installed versions of PHP and set the default PHP version
sudo update-alternatives --config php
Now, we have installed multiple versions of PHP. And we can set one version as the default PHP version we'd like to use. Enter the number, and you have successfully changed the version of PHP.
1.3 Check the version of PHP
$ php -v
1.4 Uninstall PHP
To uninstall a PHP version, (for example, PHP 7.4) from your device, use the following command:
$ sudo apt remove --autoremove php7.4
After you issue the command above, PHP 7.4 will be deleted from your device. To remove the repository, use the following command:
$ sudo add-apt-repository --remove ppa:ondrej/php
Conclusion and further readings
We have tested this tutorial on VPS Mart, so it works fine on our Ubuntu VPS Hosting. We hope this tutorial helps regarding how to install PHP 8.1 and comfortably integrate it with the Nginx web server. Your feedback is most welcome.
#######Switch PHP version
sudo update-alternatives --config php
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment