Установка разных версий PHP на Linux Debian

Обновлено Обновлено: Опубликовано Опубликовано:

В Debian можно легко управлять несколькими версиями PHP. Мы рассмотрим процесс установки разных версий пакетов и управления ими.

Установка PHP

В зависимости от необходимой версии PHP и версии Debian, подход к установке может отличаться.

Установка базовой версии

Это самый простой способ. Каждая версия Debian в своем репозитории содержит соответствующую версию PHP.

Посмотреть, какая версия будет установлена из репозитория системы можно командой:

apt search --names-only '^php[.0-9]{3}$'

Установка выполняется одной командой:

apt install php

Установка определенной версии

Если нам необходима версия PHP, которой нет в репозитории сисемы, выполняем установку дополнительного — sury.org.

Сначала установим следующие пакеты:

apt install lsb-release ca-certificates apt-transport-https software-properties-common gnupg2 curl

* где:

  • lsb-release — для определения версии релиза операционной системы.
  • ca-certificates — набор корневых сертификатов.
  • apt-transport-https — дополнение для возможности использовать репозитории по https.
  • software-properties-common — утилита для работы с репозиториями.
  • gnupg2 — для шифровки и дешифровки цифровых подписей. Нужна для работы с репозиториями.
  • curl — программа для отправки http-запросов. Нам нужна для загрузки ключа репозитория

Установим gpg-ключ репозитория sury.org:

curl -sSLo /etc/apt/trusted.gpg.d/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg

Создадим конфигурационный файл с настройкой репозитория sury.org:

echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/sury-php.list

Обновим список пакетов:

apt update

Теперь можно установить нужную версию интерпретатора:

apt-get install php7.4

apt-get install php8.1

* в данном примере 7.4 и 8.1.

Выбор версии PHP по умолчанию

Посмотреть текущую версию php, которая работает по умолчанию можно командой:

php -v

Сменить версию по умолчанию:

update-alternatives --config php

Если увидим сообщение:

...
Nothing to configure.

Значит у нас установлена всего одна версия PHP.

Мы должны увидеть что-то на подобие:

  Selection    Path             Priority   Status
------------------------------------------------------------
* 0            /usr/bin/php8.1   81        auto mode
  1            /usr/bin/php7.4   74        manual mode
  2            /usr/bin/php8.1   81        manual mode

* в данном примере используется версия php8 как версия по умолчанию.

Для смены, система предложит нам выбрать версию из списка:

Press <enter> to keep the current choice[*], or type selection number: 1

* так мы переключимся на php7.4.

Установка расширений

Рассмотрим вариант с установкой через репозиторий и с помощью сборки из исходников.

Используем репозиторий

Из настроенного ранее репозитория расширения устанавливаются с синтаксисом:

apt install php<версия>-<расширение>

Для версии, которая идет по умолчанию в репозитории, установку можно выполнить так:

apt install php-mysqli

В остальных случаях обязательно указываем версию:

apt install php7.4-mysqli

Сборка расширения из исходника

Данный вариант посложнее, но позволяет собрать расширение последней версии или того, которого нет в репозитории. Рассмотрим на примере php-amqp.

Для начала зададим переменную с версией PHP, с которой будем работать:

export PHP_VER=8.1

* так нам будет удобнее вводить команды.

установим пакет php-dev под нужную нам версию PHP:

apt install php${PHP_VER}-dev

Устанавливаем библиотеки, необходимые для расширения:

apt install librabbitmq-dev

* для какого расширения какие библиотеки нужно устанавливать, ориентируясь на документацию самого расширения.

Скачиваем исходник. Источники могут быть разные — конкретно, в нашем примере:

git clone https://github.com/php-amqp/php-amqp.git

Если система вернет ошибку, что git-команда не найдена, выполняем команду:

apt install git

Переходим в каталог с исходником:

cd php-amqp

Запускаем компиляцию расширения:

phpize${PHP_VER}

Конфигурируем исходник:

./configure

Запускаем сборку:

make

Смотрим каталог, где находятся файлы расширений PHP:

php${PHP_VER} -i | grep extension_dir

В моем случае ответ был:

extension_dir => /usr/lib/php/20210902 => /usr/lib/php/20210902

Значит, собранное расширение я буду копировать в каталог /usr/lib/php/20210902:

cp modules/amqp.so /usr/lib/php/20210902/

Создаем новый конфигурационный файл для расширения:

vi /etc/php/${PHP_VER}/mods-available/amqp.ini

extension=amqp.so

Создаем симлинк на конфигурацию для командной строки PHP:

ln -s /etc/php/${PHP_VER}/mods-available/amqp.ini /etc/php/${PHP_VER}/cli/conf.d/

А также для конфигурации обработчиков.

а) Если используется fpm:

ln -s /etc/php/${PHP_VER}/mods-available/amqp.ini /etc/php/${PHP_VER}/fpm/conf.d/

б) Если используется apache:

ln -s /etc/php/${PHP_VER}/mods-available/amqp.ini /etc/php/${PHP_VER}/apache2/conf.d/

Проверяем, что модуль появился в PHP:

php${PHP_VER} -m

Настройка PHP

В Ubuntu настройки PHP находятся в разных файлах — для каждой версии и для каждой системы, которая обрабатывает запросы.

Например, для php версии 8.1, которая будет запускаться из командной строки, файл будет:

vi /etc/php/8.1/cli/php.ini

для apache:

vi /etc/php/8.1/apache2/php.ini

для fpm:

vi /etc/php/8.1/fpm/php.ini

# Linux # Интернет # Серверы
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет