Как установить PHP 8.5 из исходников на Linux

Иногда вам нужна актуальная версия PHP, а репозитории Linux отстают. Docker не подходит или нельзя его использовать. В таких случаях приходится собирать PHP из исходников и это проще, чем кажется.

Мы разберём, как установить PHP 8.5 на Debian(Ubuntu) и RHEL(CentOS/Rocky Linux) настроить FPM и сделать всё аккуратно, чтобы не сломать систему.


Шаг 1. Скачиваем исходники PHP

Сначала качаем официальные исходники:

wget https://www.php.net/distributions/php-8.5.0.tar.gz
tar -xvf php-8.5.0.tar.gz
cd php-8.5.0

Создаём папку для установки, чтобы не трогать системный PHP:

sudo mkdir -p /opt/php-8.5

Шаг 2. Устанавливаем зависимости

PHP требует много библиотек и dev-пакетов, но не пугайтесь, всё ставится одной командой.

Для Debian/Ubuntu

sudo apt update
sudo apt install -y build-essential pkg-config autoconf bison re2c \
libxml2-dev libsqlite3-dev libcurl4-openssl-dev libjpeg-dev \
libpng-dev libwebp-dev libfreetype-dev libonig-dev libzip-dev \
libssl-dev libreadline-dev libxslt1-dev libgmp-dev libicu-dev libtirpc-dev

Для RHEL/CentOS/Rocky

sudo dnf groupinstall -y "Development Tools"
sudo dnf install -y libxml2-devel sqlite-devel libcurl-devel libjpeg-devel \
libpng-devel libwebp-devel freetype-devel oniguruma-devel libzip-devel \
openssl-devel readline-devel libxslt-devel gmp-devel libicu-devel libtirpc-devel

Шаг 3. Конфигурируем PHP

Настроим PHP с популярными расширениями и FPM:

./configure --prefix=/opt/php-8.5 \
--enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data \
--enable-mbstring --enable-intl --with-openssl --with-zlib \
--with-curl --with-zip --with-gd --with-jpeg --with-webp --with-freetype \
--enable-opcache --with-readline --enable-pcntl --enable-sockets

Для RHEL/CentOS поменяйте www-data на apache:

--with-fpm-user=apache --with-fpm-group=apache

Шаг 4. Сборка и установка

make -j$(nproc)
sudo make install

После установки php и fpm будут доступны по следующим путям:

  • PHP: /opt/php-8.5/bin/php

  • FPM: /opt/php-8.5/sbin/php-fpm


Шаг 5. Настройка php.ini

Скопируйте готовый файл:

sudo cp php.ini-production /opt/php-8.5/lib/php.ini

Можете редактировать под свои нужды.


Шаг 6. PHP-FPM как сервис systemd

Чтобы PHP-FPM работал как полноценный сервис, который стартует при загрузке системы и может управляться стандартными командами systemctl, нужно создать unit-файл systemd

sudo nano /etc/systemd/system/php-8.5-fpm.service

Вставляем:

[Unit]
Description=PHP 8.5 FPM service
After=network.target

[Service]
Type=simple
PIDFile=/opt/php-8.5/var/run/php-fpm.pid
ExecStart=/opt/php-8.5/sbin/php-fpm --nodaemonize
ExecReload=/bin/kill -USR2 $MAINPID

[Install]
WantedBy=multi-user.target

Запускаем и проверяем статус севриса:

sudo systemctl daemon-reload
sudo systemctl enable --now php-8.5-fpm
sudo systemctl status php-8.5-fpm

Если всё правильно, увидите активный процесс с PID, без ошибок.


Шаг 7. Добавляем PHP в PATH (опционально)

Чтобы при вызове php в терминале использовалась именно ваша версия PHP 8.5, а не системная, нужно добавить путь /opt/php-8.5/bin в переменную PATH.

echo 'export PATH="/opt/php-8.5/bin:$PATH"' | sudo tee /etc/profile.d/php85.sh
source /etc/profile.d/php85.sh

Проверяем:

php -v

Вы должны увидеть что-то вроде:

PHP 8.5.x (cli) (built: ...)

Шаг 8. Обновление PHP 8.5

Когда выйдут патчи (8.5.x), просто повторяем сборку:

wget https://www.php.net/distributions/php-8.5.x.tar.gz
tar -xvf php-8.5.x.tar.gz
cd php-8.5.x
./configure --prefix=/opt/php-8.5
make -j$(nproc)
sudo make install

Комментарии (0)

Войдите, чтобы оставить комментарий

Похожие статьи

Как создать AI-агента на Python с OpenAI для автоматического парсинга счетов

Подробный гайд, как разработать полноценного AI-агента на Python и OpenAI API, который автоматически парсит счета (PDF, фото), вытягивает данные в структурированный JSON, валидирует их и сохраняет в CSV или базу. Плюс интеграция с Telegram-ботом для загрузки документов.

12 0 3 мин

Почему стоит использовать Python для скриптов

Почему Bash-скрипты часто ломаются на macOS и в CI, и как Python решает эту проблему. Разбираем, в каких случаях Python лучше подходит для автоматизации, чем bash, и почему он делает скрипты понятнее, стабильнее и кросс-платформеннее.

8 0 1 мин