Image

База знаний → Установка нескольких версий php (7.3, 7.4, 8.1, 8.2) на Debian 12

[Виртуальные сервера]
Дата публикации: 05.10.2023

Часто возникают задачи установить необходимую версию php, а по умолчанию устанавливается более новая или старая. Также бывает необходимо установить и одновременно работать с двумя версиями php на одном сервере.

По умолчанию мы производим установку от пользователя root, если у Вас обычный используйте sudo.

1. Установим необходимые репозитории:

apt update
apt upgrade
apt install -y apt-transport-https lsb-release ca-certificates wget 
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list
apt update

2. Если нам нужна версия php 8.2 выполним ее установку:

apt install php8.2

2.1 Для установки php 8.1 выполним установку:

apt install php8.1

2.2 Для установки php 7.4 выполним установку:

apt install php7.4

2.3 Для установки php 7.3 выполним установку:

apt install php7.3

И так далее, при этом все версии будут одновременно доступны для работы на сервере, для каждой php версии необходимо устанавливать свои модули, а также править конфигурационный файл при необходимости.

Несколько одновременно установленных php позволяет работать с несколькими проектами в случае разных требований. Для каждой php Вы можете установить свой php-fpm и указать по аналогии на каком порту он будет работать и указать данные параметры в конфигурационном файле nginx.

3. Пример установки php-fpm и php модулей для php 8.2:

apt install php8.2 php8.2-gd

3.1 Пример установки php-fpm и php модулей для php 8.1:

apt install php8.1 php8.1-gd

4. Для проверки версии, а также использования планировщика используйте путь для каждой из версий:

/usr/bin/php8.2 /var/www/domain.tld/cron-file.php

или

/usr/bin/php8.1 /var/www/domain.tld/cron-file.php

5. При наличии нескольких версий php, чтобы переключать версию по умолчанию, используйте следующую команду:

update-alternatives --set php /usr/bin/php8.1




Andrei
07.07.2024 19:54
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
выдает ошибку:
Resolving packages.sury.org (packages.sury.org)... 93.189.63.149
Connecting to packages.sury.org (packages.sury.org)|93.189.63.149|:443... connected.
HTTP request sent, awaiting response... 451
2024-07-07 21:41:34 ERROR 451: (no description).

Но можно просто зайти на https://packages.sury.org/php/ и скачать этот файл.
Однако если его положить в /etc/apt/trusted.gpg.d и переименовать в php.gpg, то

E: Failed to fetch https://packages.sury.org/php/dists/bookworm/InRelease 451 [IP: 93.189.63.149 443]
E: The repository 'https://packages.sury.org/php bookworm InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.

Короче, шляпа.
Synay Support
07.07.2024 20:09
Не скачивается по причине того, что они заблокировали доступ с Российских IP, через зарубежный прокси файл https://packages.sury.org/php/apt.gpg скачивается нормально.
Михаил
17.07.2024 19:49
Используйте репо яндекса
https://mirror.yandex.ru/mirrors/launchpad/ondrej/php/pool/main/p/
Михаил
19.07.2024 19:26
Выше это для ubuntu, для debian тут:
https://ftp.mpi-inf.mpg.de/mirrors/linux/mirror/deb.sury.org/repositories/php/
Евгений
03.09.2024 14:50
Вместо packages.sury.org пишем packages.sury.su и все будет работать из РФ.