Быстрый способ установить две версии PHP на Debian 8 через репозиторий deb.sury.org. Для Debian 7, к сожалению, этот способ не подойдёт.
Чтобы установить репозиторий, нужно от супер-пользователя выполнить следующие действия:
apt-get install apt-transport-https ca-certificates
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ jessie main" > /etc/apt/sources.list.d/php.list
apt-get update
После этого будут доступны пакеты php5.6-xxx и php7.1-xxx. Стандартные дебиановские пакеты php5-xxx также будут доступны, но их лучше удалить, чтобы не было конфликтов. Сделать это можно одной командой:
apt-get purge 'php.*'
Выполняем следующие команды установки:
# Установка PHP 5.6
apt-get install php5.6-cli php5.6-curl php5.6-fpm php5.6-gd php5.6-intl php5.6-json php5.6-mbstring php5.6-mcrypt php5.6-pdo-mysql php5.6-xml php5.6-zip
# Установка PHP 7.1
apt-get install php7.1-cli php7.1-curl php7.1-fpm php7.1-gd php7.1-intl php7.1-json php7.1-mbstring php7.1-mcrypt php7.1-pdo-mysql php7.1-xml php7.1-zip
Всё! На этом установка PHP закончена.
Выполняем следующую команду:
apt-get install nginx
Теперь отключаем дефолтный конфиг и подключаем папку /www:
unlink /etc/nginx/sites-enabled/default
echo 'include /www*/*/conf/nginx.conf;' > /etc/nginx/sites-enabled/www
Создаём папки, необходимые для работы:
mkdir -p /www/default/docs /www/default/logs /www/default/conf
Добавляем конфиг /www/default/conf/nginx.conf:
server {
listen *:80 default_server;
server_name default;
root /www/default/docs;
access_log /www/default/logs/access.log;
error_log /www/default/logs/error.log;
set $phpini "
error_log=/www/default/logs/php-errors.log
";
index index.php index.html;
location ~ ^(.*\.php)$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php5.6-fpm.sock;
if ($arg_php7) {
fastcgi_pass unix:/run/php/php7.1-fpm.sock;
}
fastcgi_param PHP_VALUE "$phpini";
fastcgi_param SCRIPT_FILENAME $document_root$1;
}
}
Перезапускаем nginx:
service nginx reload
Создаём /www/default/docs/index.php:
echo '<?php phpinfo();' > /www/default/docs/index.php
Проверяем результат:
> wget -qO- 'http://localhost/' | grep -oE 'PHP Version [0-9\.]+'
PHP Version 5.6.30
> wget -qO- 'http://localhost/?php7=1' | grep -oE 'PHP Version [0-9\.]+'
PHP Version 7.1.4