Установка разных версий PHP на Ubuntu и переключение между ними
В Ubuntu можно держать несколько версий PHP одновременно и переключаться между ними. Разберём установку базовой и дополнительных версий, выбор версии по умолчанию, установку расширений и расположение конфигов.
Установка PHP
Базовая версия
Каждая версия Ubuntu содержит свою версию PHP в репозитории. Посмотреть, какая будет установлена:
apt search --names-only '^php[.0-9]{3}$'
apt install php
Определённая версия
Если нужной версии нет в репозитории, подключаем PPA:
apt install software-properties-common
add-apt-repository ppa:ondrej/php
При ошибке:
FileNotFoundError: [Errno 2] No such file or directory: 'gpg'
устанавливаем:
apt install gnupg-agent
При ошибке:
AttributeError: 'NoneType' object has no attribute 'people'
устанавливаем:
apt install python3-launchpadlib
Устанавливаем нужную версию:
export PHP_VER=8.3
apt install php${PHP_VER}
В примере — версия 8.3.
Выбор версии PHP по умолчанию
php -v
Смена версии по умолчанию:
update-alternatives --config php
There are 2 choices for the alternative php (providing /usr/bin/php).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/php8.3 83 auto mode
1 /usr/bin/php8.2 82 manual mode
2 /usr/bin/php8.3 83 manual mode
Press <enter> to keep the current choice[*], or type selection number: 1
Ввод номера переключит версию (в примере — на php8.2).
Установка расширений
Для версии по умолчанию:
apt install php-mysqli
Для конкретной версии:
apt install php8.2-mysqli
Синтаксис: php<версия>-<расширение>.
Настройка PHP
В Ubuntu конфиги PHP разделены по версиям и по способу запуска. Для PHP 8.3:
CLI:
vi /etc/php/8.3/cli/php.ini
Apache:
vi /etc/php/8.3/apache2/php.ini
FPM:
vi /etc/php/8.3/fpm/php.ini
Дополнительные конфиги — в /etc/php/8.3/{cli,fpm,apache2}/conf.d/.
Тонкости и подводные камни
- PPA
ondrej/php— основной источник свежих версий PHP для Ubuntu; поддерживается сообществом. update-alternatives— переключает только CLI-версию; для FPM/Apache версия задаётся отдельными сервисами (php8.2-fpm) и модулем Apache.- Несколько FPM-пулов — для разных сайтов можно поднять разные
php-fpmи связать их с NGINX/Apache через сокеты. - Расширения — для каждой версии ставятся отдельно;
php -mпоказывает модули текущей CLI-версии. gnupg-agentиpython3-launchpadlib— частые зависимости дляadd-apt-repositoryна минимальных системах.- Удаление версии —
apt purge php8.2*с проверкой, что она не используется сайтами. - Обновления безопасности — следите за версиями: старые ветки (7.x) уже EOL и не получают патчей.
Шпаргалка
# базовая
apt install php
# конкретная версия
apt install software-properties-common
add-apt-repository ppa:ondrej/php
apt install php8.3
# переключение CLI
update-alternatives --config php
# расширения
apt install php8.3-mysqli php8.3-curl php8.3-mbstring
# конфиги
/etc/php/8.3/{cli,fpm,apache2}/php.ini
Проверено на: Ubuntu 22.04/24.04/26.04 + PHP 8.1–8.4 (PPA ondrej/php).
Дата: Сентябрь 2026.