How to Install PHP on Debian 9

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:

    sudo apt updatesudo 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 :

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

    sudo apt updatesudo apt install php7.2-common php7.2-cli
  4. 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:

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

This post is a part of the how-to-install-lemp-stack-on-debian-9 series.
Other posts in this series: