14
август
2026
Как обновить PHP с версии 8.1 на 8.4
14:58

Как обновить PHP с версии 8.1 на 8.4

14 август 2026 14:58

В 2026 году есть два способа обновления PHP.

Введение

Во многих версиях Linux до сих пор используется версия PHP 8.1. Для запуска современных проектов может потребоваться более новая версия 8.3 или 8.4. Последняя версия, доступная для установки - PHP 8.5.

Первый способ - установка PHP 8.3, 8.4 или 8.5 из PPA-репозитория oandrej

sudo add-apt-repository ppa:ondrej/apache2
sudo LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php

Второй способ - установка PHP со стороннего репозитория deb https://packages.sury.org/php/
В статье я рассмотрел второй способ - deb из packages.sury.org/php/.

Способ установки новых версий PHP

Прежде всего, рекомендую отключить предыдущий репозиторий и удалить устаревший PHP7.

sudo add-apt-repository --remove ppa:ondrej/php
sudo apt remove php7*

Сообщение:

This repository is in process of being merged into https://packages.sury.org/php/

Если прочитать на веб-сайте https://packages.sury.org/php файл README.txt, путь установки следующий:

1) готовимся к установке: обновляем кеш пакетов и устанавливаем утилиты, которые нужны для загрузки файла ключа репозитория из Интернет.

sudo apt-get update
sudo apt-get -y install lsb-release ca-certificates curl

2) из пакета debsuryorg-archive-keyring.deb скачанного с сайта https://packages.sury.org/
устанавливаем ключ подписи репозитория на локальный ПК

Вначале скачаем установочный DEB-файл пакета в папку tmp

curl -sSLo /tmp/debsuryorg-archive-keyring.deb \
https://packages.sury.org/debsuryorg-archive-keyring.deb

Затем установим пакет с ключом

dpkg -i /tmp/debsuryorg-archive-keyring.deb

Ключ появится в папке /usr/share/keyrings/ ,
где имя файла связки ключей: debsuryorg-archive-keyring.gpg

3) В папке /etc/apt/sources.list.d/ создаём запись для нового репозитория

Файл php.list имеет содержимое из одной строки:

deb [signed-by=/usr/share/keyrings/debsuryorg-archive-keyring.gpg] https://packages.sury.org/php/ jammy main

Где вместо jammy нужно указать кодовое название своего дистрибутива.
Имя дистрибутива можно узнать командой

lsb_release -a

Также можно узнать кодовое название по номеру версии Linux.
Наиболее популярные версии Linux имеют кодовые слова:

  • Ubuntu 20.04 LTS - focal
  • Ubuntu 22.04 LTS - jammy
  • Ubuntu 24.04 LTS - noble
  • Linux Mint 21 - jammy
  • Linux Mint 22 - noble
  • Debian 11 - bullseye
  • Debian 12 - bookworm
  • Debian 13 - trixie

4) Установка php 8.4

sudo apt-get update
sudo apt-get install php8.4-common

Проблемы и решения

Приоритет репозитория операционной системы Linux может быть выше, чем у стороннего репозитория, из-за чего программы и библиотеки не устанавливаются из стороннего репозитория.

Создание файла для указания приоритета установки, т.е. закрепления пакетов за репозиторием: APT Pinning

sudo nano 

Содержимое файла:

Package: libgd3
Pin: release o=deb.sury.org
Pin-Priority: 1001

Package: php*
Pin: release o=deb.sury.org
Pin-Priority: 1001

1001 - означает наивысший приоритет, который выше чем у системного репозитория ОС.

Раньше библиотека LibGD3 из системного репозитория Ubuntu конфликтовала с требованием графического модуля PHP php8.4-gd использовать LibGD3 версии 2.3.3,

  • в системном репозитории версия 2.3.0,
  • будет установлена версия 2.3.3 из репозитория deb.sury.org, как имеющая более высокий приоритет 1001.

Об этом говорит команда:

apt-cache policy libgd3

Теперь ошибки не будет. Выполняем, как обычно:

sudo apt-get update
sudo apt-get install php8.4-common

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

php --version

Переключение версии PHP в ОС по умолчанию

Только если версия PHP не та, которая требуется:

sudo update-alternatives --config php

Установка модуля Apache

sudo apt-get install libapache2-mod-php8.4

Причины ошибки "undefined constant IMG_JPG"

При запуске проекта на языке PHP, который использует графику, возможно появление ошибки, касающейся IMG_JPG

Если проделаны предыдущие шаги (установка php одной из последних версий), нужно дополнительно установить модуль:

sudo apt-get install libgd3
sudo apt-get install php8.4-gd

Список модулей Apache2 для установки

Для проекта я дополнительно установил пакеты и модули веб-сервера Apache:

sudo apt install php8.4 php8.4-cli php8.4-common
sudo apt install libapache2-mod-php8.4 
sudo apt install php8.4-curl php8.4-intl php8.4-mbstring php8.4-mysql
sudo apt install php8.4-readline php8.4-xml php8.4-yaml php8.4-zip php8.4-apcu

Включение модуля PHP

sudo a2enmod php8.4
sudo service apache2 restart

Переключение конфигурации FastCGI FPM / обычный модуль

Состояние модуля можно узнать командой

sudo systemctl status php8.4-fpm

Если версия FPM такая же как у PHP, т.е. в данном случае 8.4, ничего не делаем.

Если версии отличаются, отключим модули FCGI и setenvif
sudo a2dismod actions alias proxy_fcgi setenvif
sudo a2disconf php8.4-fpm
И включим их
sudo a2enconf php8.4-fpm
sudo systemctl reload apache2

sudo a2enmod actions alias proxy_fcgi setenvif


Данная статья проверена с версией PHP 8.4, но может подойти к версиям 8.3 и 8.5, при замене соответствующих цифр в командах терминала.



Похожие публикации