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

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

sudo 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

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

php --version

Вывод: PHP 8.4.24

Версия PHP успешно обновлена.

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

В Linux Mint 21 возникла проблема с обновлением php8.4-gd из-за зависимости от libgd3, которая должна быть установлена версии >= 2.3.3, но в репозитории кандидат на установку 2.3.0.
Решение: приоритет репозитория операционной системы Linux может быть выше, чем у стороннего репозитория, из-за чего программы и библиотеки не устанавливаются из стороннего репозитория.

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

sudo nano /etc/apt/preferences

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

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

Установка модуля http-сервера Apache

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

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

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

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

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 не существует или версия FPM такая же как у PHP (т.е. 8.4), ничего не делаем.

Если версии PHP и FPM отличаются, отключим модуль FCGI, FPM:

sudo a2dismod actions alias proxy_fcgi 
sudo a2disconf php8.4-fpm

И включим их:

sudo a2enconf php8.4-fpm
sudo a2enmod actions alias proxy_fcgi setenvif

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



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