
В этой статье мы рассмотрим как поставить стоковый PHP 8.3 из официальных репозиториев Ubuntu 24.04 (Noble) и параллельно держать несколько версий (включая 8.2…7.x и даже 5.6) через PPA Ondřej Surý. Разбирем варианты с Apache (mod_php и FPM) и Nginx (FPM), переключение версий для CLI, чек‑лист и блок «типовые ошибки → решения». Старые ветки (7.x/5.6) — EOL, используйте изолированно и осознанно.
Что ставить и когда
Нужен просто актуальный PHP → ставьте 8.3 из официальных репозиториев Ubuntu (без PPA).
Нужны несколько версий (например, 8.3+8.2 или даже 7.4/5.6 для легаси) → добавьте PPA
ppa:ondrej/phpи ставьте дополнительные ветки параллельно.Веб‑сервер:
Apache: либо
libapache2-mod-phpX.Y(просто, но одна версия на весь Apache), либо phpX.Y-fpm (гибко, можно разные версии на разные сайты).Nginx: всегда phpX.Y-fpm.
Рекомендация: в продакшене предпочитайте поддерживаемые ветки (8.3/8.2). Легаси (7.x/5.6) изолируйте (контейнер/отдельный хост) и ограничивайте доступ.
Базовые пакеты и подготовка
sudo apt update
sudo apt install -y software-properties-common curl ca-certificates gnupg lsb-release
Проверьте релиз:
lsb_release -sd # Ubuntu 24.04 LTS (Noble Numbat)
![]()
Используем официальный репозиторий
Установка PHP 8.3 (Apache модуль + CLI + типовые расширения)
sudo apt update
sudo apt install -y php libapache2-mod-php php-cli \
php-mysql php-xml php-curl php-mbstring php-zip php-gd
php -v

Где искать php.ini:
Apache SAPI:
/etc/php/8.3/apache2/php.iniCLI:
/etc/php/8.3/cli/php.iniFPM (если поставите):
/etc/php/8.3/fpm/php.ini
Переключение версии для CLI:
sudo update-alternatives --config php
php -v

Пока установлена одна ветка (8.3), выбор один. При добавлении других версий через PPA здесь появятся варианты.

Добавляем PPA Ondřej Surý (для нескольких версий, вплоть до 5.6)
PPA содержит ко‑инсталируемые пакеты
phpX.Y-*для множества версий. Старые ветки (7.x/5.6) — EOL: держите их изолированно, обновляйте код по возможности.
Подключение PPA
sudo add-apt-repository -y ppa:ondrej/php
sudo apt update
Примеры установки нескольких веток параллельно
Apache c mod_php (простота, но одна версия на весь Apache)
# Устанавливаем 8.3, 8.2, 7.4 и 5.6 параллельно
sudo apt install -y \
libapache2-mod-php8.3 php8.3-cli php8.3-mysql php8.3-xml php8.3-curl php8.3-mbstring php8.3-zip php8.3-gd \
libapache2-mod-php8.2 php8.2-cli php8.2-mysql php8.2-xml php8.2-curl php8.2-mbstring php8.2-zip php8.2-gd \
libapache2-mod-php7.4 php7.4-cli php7.4-mysql php7.4-xml php7.4-curl php7.4-mbstring php7.4-zip php7.4-gd \
libapache2-mod-php5.6 php5.6-cli php5.6-mysql php5.6-xml php5.6-curl php5.6-mbstring php5.6-zip php5.6-gd
Переключение версии в Apache: (одновременно активен один модуль)
# выбрать 8.3
sudo a2dismod php8.2 php7.4 php5.6 2>/dev/null || true
sudo a2enmod php8.3
sudo systemctl reload apache2
# выбрать 8.2
sudo a2dismod php8.3 php7.4 php5.6 2>/dev/null || true
sudo a2enmod php8.2
sudo systemctl reload apache2
# выбрать 7.4
sudo a2dismod php8.3 php8.2 php5.6 2>/dev/null || true
sudo a2enmod php7.4
sudo systemctl reload apache2
# выбрать 5.6 (для легаси, на свой риск)
sudo a2dismod php8.3 php8.2 php7.4 2>/dev/null || true
sudo a2enmod php5.6
sudo systemctl reload apache2
Apache/Nginx с PHP‑FPM (гибко: разным сайтам — разные версии)
sudo apt install -y \
php8.3-fpm php8.2-fpm php7.4-fpm php5.6-fpm \
php8.3-mysql php8.2-mysql php7.4-mysql php5.6-mysql \
php8.3-xml php8.2-xml php7.4-xml php5.6-xml \
php8.3-curl php8.2-curl php7.4-curl php5.6-curl \
php8.3-mbstring php8.2-mbstring php7.4-mbstring php5.6-mbstring \
php8.3-zip php8.2-zip php7.4-zip php5.6-zip \
php8.3-gd php8.2-gd php7.4-gd php5.6-gd
Пулы слушают сокет (по умолчанию):
8.3:
/run/php/php8.3-fpm.sock8.2:
/run/php/php8.2-fpm.sock7.4:
/run/php/php7.4-fpm.sock5.6:
/run/php/php5.6-fpm.sock
Активируйте нужные модули и сайт:
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php8.2-fpm # создаёт стандартный мэпинг, если требуется
sudo a2ensite app82.local
sudo systemctl reload apache2
Не забудьте перезапустить/перезагрузить сервисы:
sudo systemctl reload nginx || true
sudo systemctl reload apache2 || true
sudo systemctl restart php8.3-fpm php8.2-fpm php7.4-fpm php5.6-fpm
Переключение версии CLI
sudo update-alternatives --config php
php -v
Аналогично можно выбрать phar/phar.phar.


Где править настройки и смотреть модули
php.ini (типовые пути):
Apache:
/etc/php/<версия>/apache2/php.iniFPM:
/etc/php/<версия>/fpm/php.iniCLI:
/etc/php/<версия>/cli/php.ini
Популярные параметры:
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 60
После правок:
sudo systemctl reload apache2 2>/dev/null || true
sudo systemctl restart php8.3-fpm php8.2-fpm php7.4-fpm php5.6-fpm 2>/dev/null || true
Список загруженных модулей:
php -m | sort
php8.2 -m | sort
php7.4 -m | sort
php5.6 -m | sort
Безопасность и эксплуатация
Для Apache mod_php единовременно активна одна версия на весь веб‑сервер. Для разных версий на разных сайтах используйте FPM или изоляцию (контейнеры/отдельные инстансы).
Старые ветки 7.x/5.6 — EOL: ограничивайте доступ, выключайте лишние модули, мониторьте уязвимости, планируйте миграцию к 8.x.
Минимизируйте набор расширений: ставьте только используемые модули.
Удаляйте
phpinfo()после проверки, не держите его в продакшене.
Типовые ошибки → быстрые решения
PHP файл скачивается вместо выполнения (Apache): не активирован модуль.
apache2ctl -M | grep php→a2enmod phpX.Y, перезагрузка.Веб показывает “не ту” версию: отключите старую
a2dismod php*, включите нужнуюa2enmod phpX.Y,systemctl reload apache2.Nginx: 502 Bad Gateway: неверный сокет/порт FPM. Проверьте
fastcgi_passи что пул запущен:systemctl status phpX.Y-fpm.CLI не переключается:
sudo update-alternatives --config php.Расширение “не видитcя”: поставьте модуль для той же ветки, что выполняет код (
php7.4-xml≠php-xml). Перезапустите FPM/Apache.Конфликт .htaccess/директив: проверьте
AllowOverrideи при необходимости задайте параметры в<VirtualHost>илиphp.iniнужной SAPI.Папка сессий/кэша недоступна: проверьте владельца/права (для FPM — пользователь пула, по умолчанию
www-data).
Чек‑лист перед продакшн‑запуском
Установлены требуемые версии PHP и нужные расширения.
Для Apache: выбран режим (mod_php или FPM); активна только нужная версия/модуль.
Для Nginx: корректно прописан
fastcgi_passк верной версии FPM.php.ini/пулы FPM настроены (лимиты, часовой пояс, логи).Проверено
phpinfo()для каждого сайта/пула; файлы удалены.update-alternativesвыбран для CLI, если нужно.Логи ошибок чисты, мониторинг включён (systemd‑юниты, access/error‑логи, метрики).
Для 7.x/5.6 оформлены отдельные меры безопасности и план миграции.
Итоги
На Ubuntu 24.04 вы можете: (1) быстро поставить PHP 8.3 из официальных репозиториев; (2) через PPA ondrej/php добавить параллельно нужные ветки до 7.x/5.6, выбирая режим Apache (mod_php или FPM) либо Nginx (FPM). Для удобства — update-alternatives для CLI, для гибкости — FPM с разными пулами. Старые версии поддерживайте только изолированно и планируйте обновление к 8.x.