Часто возникают задачи установить необходимую версию 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
выдает ошибку:
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.
Короче, шляпа.
https://mirror.yandex.ru/mirrors/launchpad/ondrej/php/pool/main/p/
https://ftp.mpi-inf.mpg.de/mirrors/linux/mirror/deb.sury.org/repositories/php/