How to install/update PHP 8.0 (Debian/Ubuntu)
PHP 8.0 brings several new features and improvements in performance, syntax, security, and stability. Installing PHP 8.0 on just about any sort of server/development setup is made easy with pre-compiled packages available in all currently supported Debian and Ubuntu versions.
1. List existing PHP packages
If you are updating from an existing PHP version to 8.0, it's important to get a list of existing PHP packages. Albeit the small extension changes, installing the PHP 8.0 counterpart packages is the easiest way to make sure the upgrade is smooth and covers the same packages from the current PHP version.
dpkg -l | grep php | tee packages.txt
This command will list all the packages containing name php
, and writes it to a file named packages.txt
, which can be referred anytime.
2. Add ondrej/php
PPA
Ubuntu
sudo add-apt-repository ppa:ondrej/php # Press enter when prompted.
sudo apt-get update
Debian
sudo apt install apt-transport-https lsb-release ca-certificates wget -y
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
sudo sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
sudo apt update
Steps above will add the PPA as a source of packages, that contains all PHP packages and their dependencies such as argon2
and libzip
.
3. Install PHP 8.0 and extensions
All PHP 8.0 packages follow php8.0-NAME
pattern, and php8.0-common
package includes a sensible set default of extensions (such as `php8.0-).
Install PHP 8.0 with CLI
sudo apt install php8.0-common php8.0-cli -y
This command will install several PHP extensions due to php8.0-common
, and the CLI for PHP 8.0.
You can confirm the installation by running:
php -v # Show PHP version.
php -m # Show PHP modules loaded.
Additional extensions
You can install additional extensions from the same php8.0-NAME
pattern. Refer to the packages.txt
file to see a list of existing packages if you are upgrading an existing system.
Note that you do not need to install php8.0-json
as it is now included by default.
An example to install a few more useful extensions:
sudo apt install php8.0-{bz2,curl,intl,mysql,readline,xml}
For development environments, code coverage tools or the Xdebug debugger can be installed as well.
sudo apt install php8.0-pcov # PCOV code coverage tool
sudo apt install php8.0-xdebug # Xdebug debugger
Install Server APIs
Depending on the web server you use, you will need to install additional packages to integrate with the web server.
For Apache using mpm_event
, Nginx, Litespeed, etc., php8.0-fpm
package provides integration with PHP 8.0 via FPM.
sudo apt install php8.0-fpm
For Apache using mod_php
, install libapache2-mod-php8.0
.
sudo apt install libapache2-mod-php8.0
4. Test PHP 8.0 installation
To test the PHP installation and the extensions, run the following commands:
php -v
php -m
# php -v
PHP 8.0.0-dev (cli) (built: Oct 4 2020 14:04:36) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.0-dev, Copyright (c) Zend Technologies
# php -m
[PHP Modules]
Core
ctype
curl
...
5. Purge old PHP versions
If the new installation is working as expected, you can remove the old PHP packages from the system.
sudo apt purge '^php7.4.*'
This assumes you are using PHP 7.4 as the previous version. Change php7.4
part of the command above with the appropriate PHP version.