How to Configure PHP on DreamCompute running Debian or Ubuntu

PHP is a popular server-side scripting language used to build websites and other backend functionality. PHP is an important part of LAMP (Linux, Apache, MySQL, PHP) stacks as well as other AMP stacks.

This article assumes you are running a Debian or Ubuntu-based instance. Visit the following link to view current versions of PHP:

Installing PHP (default version)

PHP comes in different packages depending on what you specifically need to use it for. You can choose to install one or more of these packages to suite your needs, but the following command installs the most common and useful packages to get moving with PHP right away.

[email protected]:$ sudo apt-get install php libapache2-mod-php php-mysql php-curl

Install a specific version of PHP

The commands above install the default version of PHP configured with your version of Debian or Ubuntu. For example, running this command in Ubuntu 17 would install PHP 7.1. On Ubuntu 16, it would install PHP 7.0.

If you need a different version, specify that in the command. This shows how to specifically install PHP 7.0.

[email protected]:$ sudo apt-get install php7.0 libapache2-mod-php7.0 php7.0-mysql

How to install PHP 7.2?

Version 7.2 is the most recent version available and not available in earlier versions of Ubuntu's repositories. To install, you must first add a repository, run an update, then install version 7.2.

[email protected]:$ sudo apt-add-repository ppa:ondrej/php
[email protected]:$ sudo apt-get update
[email protected]:$ sudo apt-get install php7.2

Common packages

You can view all currently installed PHP packages by running the following command:

[email protected]:$ dpkg -l | grep php

There are a few common packages that are normally installed with PHP. The most common are shown below.

libapache2-mod-php

This package provides the PHP module for the Apache 2 webserver. View the following link for further details:

If you ran the commands above, this was already installed. You can confirm by running the following command:

[email protected]:$ dpkg -l | grep apache2-mod-php
ii  libapache2-mod-php  1:7.2+60+ubuntu17.10.1+deb.sury.org+1  all  server-side, HTML-embedded scripting language (Apache 2 module) (default)

php-cli

This package provides the /usr/bin/php command interpreter which is used to test PHP scripts from a shell or perform general shell scripting tasks. This package is only for command line tools and is not usable for websites running on Apache. php-cli is installed when you install a PHP version. If not already installed, you can install is using the following command:

[email protected]:$ sudo apt-get install -y php-cli

This will install the default PHP binary in the /usr/bin/ directory. You can check if this packaged is installed by running the following:

[email protected]:$ dpkg -l | grep php-cli

View the following site for further details:

PHP modules/extensions

If you have installed 'php-cli', you can view all PHP modules currently installed by running the following command:

Common modules are listed below, but you can view additional modules for PHP at the following links.

Debian Packages for PHP

Ubuntu Packages for PHP

PHP databases modules/extensions

MySQL is one of the most common databases used with PHP, however there are additional packages available for other database engines. 

mysqlnd

This package contains the mysql, mysqli and PDO mysql modules for PHP using the MySQL Native Driver which is newer and generally faster. This module is installed with php-mysql. You can check if it's installed by running the following:

[email protected]:$ php -m | grep mysqlnd

View the following links for further details:

pgsql

This package contains the pgsql and pdo_pgsql modules for use with PostgreSQL.

sqlite

This package contains the sqlite3 and pdo_sqlite modules for working with SQLite.

Optional PHP Modules

These modules add additional functionality to PHP.

curl

The cURL module allows downloading from HTTP, FTP and other sources. You could install the default PHP version using php-curl or you could specify a specific version of PHP.

[email protected]:$ sudo apt-get install php7.1-curl

json

php-json is installed when you install a PHP version. It allows PHP to interact with JSON data.

Run the following to install (if not already installed).

[email protected]:$ sudo apt-get install php-json

Multimedia libraries

libav and ffmpeg and some of the most popular multimedia libraries for PHP. View the following article for an overview of the differences:

libav

Libav was forked from FFmpeg in 2011. It is a program for handling multimedia data. View the following links for further details:

You can install it by running the following command:

[email protected]:$ sudo apt-get install libav-tools

ffmpeg

The ffmpeg libraries and gd will be installed with this package. These allow retrieving meta-data from video and images, as well as some video frame editing.

You can install it by running the following command:

[email protected]:$ sudo apt-get install ffmpeg

gd

The GD library provides image manipulation features which can be useful for some applications.

imagick

Imagick is a native PHP extension to create and modify images.

Configuration Files

There are two configuration files for PHP that are used for the CLI and the Apache modules specifically. Change <version> to your specific version of PHP.

/etc/php/cli/<version>/php.ini

The primary configuration file for PHP when executed from the CLI. It has no memory_limit at all and allows all functions (including POSIX PHP functions).

/etc/php/<version>/apache2/php.ini

The primary configuration file for PHP when ran from the Apache module. It has a memory_limit of 128MB and disallows all functions related to POSIX PHP functions for security and safety reasons.

Did this article answer your questions?

Article last updated PST.