Настройка PHP на серверной платформе Ubuntu 24.04

Раздел: Администрирование веб-серверов -> Настройка серверов Linux

Варианты установки PHP на Ubuntu 24.04

Основное решение: установка PHP через PPA ondrej/php

Этот метод позволяет получить самые свежие версии PHP (доступны PHP 8.3, 8.4, 7.4 и другие) и гибко управлять расширениями. Репозиторий ppa:ondrej/php официально поддерживается и регулярно обновляется.

Цель: получение актуальных стабильных версий PHP с возможностью выбора конкретной.

sudo add-apt-repository ppa:ondrej/php -y
sudo apt update

Ubuntu 24.04 установка php (установка php на ubuntu 24.04)

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

sudo apt install php8.3 php8.3-cli php8.3-fpm php8.3-mysql php8.3-xml php8.3-mbstring php8.3-curl php8.3-zip

Установка включает основные расширения, необходимые для большинства веб-приложений. Служба php8.3-fpm запускается автоматически.

Проверка версии:

php -v
PHP 8.3.15 (cli) (built: ...) ( NTS )
Copyright (c) The PHP Group

Настройка PHP-FPM для работы с Nginx или Apache требует редактирования пула (/etc/php/8.3/fpm/pool.d/www.conf).

Типичные ошибки:

  • Конфликт версий, если ранее установлена другая версия PHP через apt. Решение: удалить старую версию или использовать несколько версий одновременно.
  • Проблема с зависимостями при добавлении PPA (ошибка GPG). Решение: установка software-properties-common и обновление ключей.

Как установить PHP из официального репозитория Ubuntu?

Этот вариант подходит, когда требуется версия, включённая в дистрибутив (Ubuntu 24.04 поставляется с PHP 8.3 в репозиториях universe). Установка через apt без дополнительных репозиториев.

sudo apt update
sudo apt install php

Будут установлены базовые пакеты. Конкретные расширения добавляются отдельно: sudo apt install php-mysql php-xml php-mbstring.

Цель: быстрая установка PHP с минимальными усилиями для тестовых или простых проектов.

Ограничения: версия PHP фиксирована (на момент выхода Ubuntu 24.04 это 8.3), обновления до новых минорных версий могут отсутствовать.

Как установить конкретную версию PHP (например, 8.2 или 8.4) с расширениями?

Используя тот же PPA ondrej/php, можно установить любую доступную версию. Например, для PHP 8.4 (на момент написания последняя стабильная):

sudo add-apt-repository ppa:ondrej/php -y
sudo apt update
sudo apt install php8.4 php8.4-cli php8.4-fpm php8.4-{mysql,xml,mbstring,curl,zip,bcmath,gd,intl,opcache}

Расширения указываются в фигурных скобках (синтаксис bash). Это удобно для установки набора.

Цель: использование новейшей версии PHP для современных фреймворков или приложений с требованиями.

Конфликт с уже установленной версией: если php-fpm от другой версии уже запущен, необходимо выключить его и включить нужный.

Как собрать PHP из исходного кода для нестандартной конфигурации?

Этот метод применяется, когда требуется кастомная сборка с особыми опциями компиляции (например, собственная статическая компиляция, нестандартные пути, поддержка экспериментальных расширений).

wget https://www.php.net/distributions/php-8.4.1.tar.gz
tar -xzf php-8.4.1.tar.gz
cd php-8.4.1
./configure --prefix=/usr/local/php8.4 --with-pdo-mysql --with-openssl --enable-mbstring --enable-fpm --with-curl
make -j$(nproc)
sudo make install

После сборки потребуется скопировать файлы конфигурации (php.ini-production), настроить php-fpm как systemd unit.

Цель: максимальная кастомизация, использование патчей, тестирование альфа-версий.

Проблемы: требуется много зависимостей (build-essential, libxml2-dev, libsqlite3-dev и т.д.). Сборка занимает время, возможны конфликты с системной версией.

После установки любой версии рекомендуется настроить временную зону, лимиты памяти и выполнить оптимизацию (opcache, realpath_cache) в php.ini.

Расширенные примеры настройки PHP на Ubuntu 24.04

Установка нескольких версий PHP и переключение между ними

Часто требуется одновременно иметь PHP 8.2 и 8.3 для разных проектов. Установка обеих версий через PPA:

Пример
sudo apt install php8.2 php8.2-fpm php8.3 php8.3-fpm
sudo update-alternatives --config php

Команда update-alternatives позволяет выбрать версию CLI по умолчанию. Для FPM каждая версия запускается как отдельная служба: sudo systemctl start php8.2-fpm, sudo systemctl start php8.3-fpm. Переключение между сокетами в конфигурации веб-сервера.

Пример выбора версии:

Пример
sudo update-alternatives --set php /usr/bin/php8.3
php -v
PHP 8.3.15 (cli) (built: ...)

Настройка пула PHP-FPM для отдельного сайта

Создание собственного пула с уникальными параметрами (например, ограничение памяти, количество процессов). Файл /etc/php/8.3/fpm/pool.d/mysite.conf:

Пример
[mysite]
user = www-data
group = www-data
listen = /run/php/php8.3-mysite.sock
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 10
pm.start_servers = 3
pm.min_spare_servers = 2
pm.max_spare_servers = 5
php_admin_value[memory_limit] = 256M

После добавления конфигурации перезагрузка FPM:

Пример
sudo systemctl restart php8.3-fpm

Пул используется в Nginx через upstream.

Установка дополнительных расширений через pecl

Например, для Redis или ImageMagick. Требуется установленный php-dev и pecl:

Пример
sudo apt install php8.3-dev php8.3-pecl
sudo pecl install redis
sudo bash -c "echo 'extension=redis.so' > /etc/php/8.3/mods-available/redis.ini"
sudo phpenmod -v 8.3 redis
sudo systemctl restart php8.3-fpm

Проверка:

Пример
php -m | grep redis
redis

Использование Composer с определённой версией PHP

Для проекта, требующего PHP 8.2, можно указать конкретный бинарник:

Пример
wget https://getcomposer.org/composer.phar
chmod +x composer.phar
./composer.phar install --ignore-platform-req=ext-xdebug
# или запуск с явным указанием php
/usr/bin/php8.2 ./composer.phar update

Также можно задать глобальный псевдоним:

Пример
alias composer='php8.2 /usr/local/bin/composer'

Оптимизация производительности через OpCache

Настройка opcache в /etc/php/8.3/fpm/conf.d/10-opcache.ini:

Пример
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.validate_timestamps=0

Для разработки validate_timestamps рекомендуется оставить 1. После изменений перезагрузка FPM.

Проверка статуса opcache через скрипт или команду:

Пример
php -i | grep opcache
opcache.enable => On => On
opcache.memory_consumption => 128

Установка PHP на Ubuntu 24.04 - comments

En
Ubuntu 24.04 установка php (php)