How to Install PHP on Debian 9
Updated on
•6 min read

Debian 9 ships with PHP version 7.0 will soon reach end-of-life for support and no longer receive security updates.
In this tutorial, we will walk you through the steps for installing PHP 7.2 on a Debian 9 server. We will also show you how to configure Apache and Nginx to run PHP.
Prerequisites
Before starting with this tutorial, make sure you are logged in as a user with sudo privileges .
Installing PHP 7.2 on Debian 9
The following steps describe how to install PHP 7.2 using the Ondrej Sury repository.
First, update the
apt
package list and install the dependencies necessary to add a new repository over HTTPS:sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
Start by importing the repository’s GPG key using the following curl command :
curl -fsSL https://packages.sury.org/php/apt.gpg | sudo apt-key add -
Add the ondrej’s repository to your system’s software repository list by typing:
sudo add-apt-repository "deb https://packages.sury.org/php/ $(lsb_release -cs) main"
Now that we have the ondrej’s repository enabled on our system, we can install PHP by specifying the version we want to use:
sudo apt update
sudo apt install php7.2-common php7.2-cli
Verify the installation, by running the following command which will print the PHP version.
php -v
PHP 7.2.8-1+0~20180725124257.2+stretch~1.gbp571e56 (cli) (built: Jul 25 2018 12:43:00) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.2.8-1+0~20180725124257.2+stretch~1.gbp571e56, Copyright (c) 1999-2018, by Zend Technologies
Configuring Apache to run PHP
If you are using Apache as your web server to install PHP and Apache PHP module run the following command:
sudo apt install php7.2 libapache2-mod-php
Once the packages are installed to enable the php7.2 module just restart the Apache service:
sudo systemctl restart apache2
Configuring Nginx to run PHP
Unlike Apache, Nginx doesn’t have a built in support for processing PHP files so we need to install a separate application such as PHP FPM (“fastCGI process manager”) which will handle PHP files.
To install the PHP and PHP FPM packages run the following command:
sudo apt install php7.2-fpm
Once the packages are installed the PHP FPM service will start automatically. You can check the service status with:
systemctl status php7.2-fpm
● php7.2-fpm.service - The PHP 7.2 FastCGI Process Manager
Loaded: loaded (/lib/systemd/system/php7.2-fpm.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2018-08-30 21:06:53 UTC; 1min 4s ago
Docs: man:php-fpm7.2(8)
Main PID: 16791 (php-fpm7.2)
Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
CGroup: /system.slice/php7.2-fpm.service
├─16791 php-fpm: master process (/etc/php/7.2/fpm/php-fpm.conf)
├─16792 php-fpm: pool www
└─16793 php-fpm: pool www
You can now edit your domain Nginx server block and add the following lines so that Nginx can process PHP files:
server {
# . . . other code
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
}
}
Restart the Nginx service so that the new configuration take effect:
sudo systemctl restart nginx
Installing PHP extensions
We can extend the core functionality of PHP by installing additional extensions. PHP extensions are available as packages and can be easily installed with:
sudo apt install php-[extname]
For example if you want to install MySQL and GD PHP extensions you should run the following command:
sudo apt install php7.2-mysql php7.2-gd
After installing a new PHP extension do not forget to restart the Apache or the PHP FPM service, depending on your setup.
Testing PHP Processing
To test whether your web server is configured properly for PHP processing, create a new file called info.php inside the /var/www/html
directory with the following code:
<?php
phpinfo();
Save the file, open your browser of choice and visit http://your_server_ip/info.php
The phpinfo
function will print information about your PHP configuration as shown on the image below:

Conclusion
You have successfully installed PHP on your Debian 9 server and learned how to configure your web server to process PHP files.
If you have any questions or feedback, do not hesitate to leave a comment.
This post is a part of the how-to-install-lemp-stack-on-debian-9 series.
Other posts in this series: