How to Install PHP on Debian 9

By 

Published on

4 min read

Install PHP 7.2 on Debian 9

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.

  1. First, update the apt package list and install the dependencies necessary to add a new repository over HTTPS:

    Terminal
    sudo apt update
    sudo apt install apt-transport-https ca-certificates curl software-properties-common
  2. Start by importing the repository’s GPG key using the following curl command :

    Terminal
    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:

    Terminal
    sudo add-apt-repository "deb https://packages.sury.org/php/ $(lsb_release -cs) main"
  3. Now that we have the ondrej’s repository enabled on our system, we can install PHP by specifying the version we want to use:

    Terminal
    sudo apt update
    sudo apt install php7.2-common php7.2-cli
  4. Verify the installation, by running the following command which will print the PHP version.

    Terminal
    php -v
    output
    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:

Terminal
sudo apt install php7.2 libapache2-mod-php

Once the packages are installed to enable the php7.2 module just restart the Apache service:

Terminal
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:

Terminal
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:

Terminal
systemctl status php7.2-fpm
output
● 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:

nginx
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:

Terminal
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:

Terminal
sudo apt install php-[extname]

For example if you want to install MySQL and GD PHP extensions you should run the following command:

Terminal
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:

/var/www/html/info.phpphp
<?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:

phpinfo Debian

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.

Linuxize Weekly Newsletter

A quick weekly roundup of new tutorials, news, and tips.

About the authors

Dejan Panovski

Dejan Panovski

Dejan Panovski is the founder of Linuxize, an RHCSA-certified Linux system administrator and DevOps engineer based in Skopje, Macedonia. Author of 800+ Linux tutorials with 20+ years of experience turning complex Linux tasks into clear, reliable guides.

View author page