Руководство по установке и обновлению PHP 8.4 для Ubuntu и Debian

Источник: «PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian»
Руководство для Debian и Ubuntu по установке PHP 8.4 на новый сервер или обновлению существующего PHP до PHP 8.4.

В PHP 8.4 появилось несколько новых функций, улучшена безопасность, повышена производительность, но при этом не обошлось и без устаревания и удаления функций.

Это руководство показывает, как установить PHP 8.4 или обновить его до PHP 8.4 на Ubuntu, Debian или их производных. Хотя можно скомпилировать PHP из исходных текстов, установка из APT-репозитория, как описано ниже, зачастую быстрее и безопаснее, поскольку эти репозитории будут предоставлять последние исправления ошибок и обновления безопасности в будущем.

PHP 8.4 недоступен в текущих репозиториях Debian и Ubuntu. В руководстве используются репозитории, поддерживаемые Ondřej Surý. PHP-репозитории Ondrej'а уже несколько лет являются де-факто репозиториями для PHP в Ubuntu, Debian и их производных.

Потенциальное влияние на обратную совместимость в PHP 8.4

В PHP 8.4 появилось несколько новых функций, таких как хуки свойств, асимметричная видимость, улучшения в DOM, Curl, расширения PCRE и многое другое.

Тем не менее PHP 8.4 также упраздняет некоторые функции PHP и удаляет четыре расширения PHP из ядра PHP в PECL. Это может повлиять на существующие PHP-приложения, которые будут выдавать дополнительные уведомления/предупреждения PHP или не будут работать в определённых условиях.

Некоторые из заметных изменений, которые могут повлиять на существующие приложения, включают:

Когда расширение PHP переносится из ядра PHP в PECL, оно будет следовать своему собственному циклу релизов. Репозитории, используемые в руководстве, будут предоставлять обновления для него, если проект PECL для этого расширения выпустит обновления. Однако это также означает, что расширение PECL может (и часто так и происходит) отставать в обслуживании.

Прежде чем продолжить, обязательно сделайте резервную копию системы. Данное руководство устанавливает PHP 8.4 рядом с существующими установками PHP, что позволяет легко переключиться на другую установку PHP в случае необходимости.

1. Список установленных пакетов PHP

Этот шаг применяется только при обновлении существующей установки PHP. Следующая команда выводит список всех установленных пакетов PHP с текстом php в имени, отображает его на экране и записывает в файл packages.txt. Этот файл пригодится на последующем этапе установки пакетов PHP 8.4, чтобы убедиться, что установлен тот же список расширений версии PHP 8.4.

dpkg -l | grep php | tee packages.txt

2. Добавление ondrej/php PPA/DPA

Поскольку пакетов PHP 8.4 нет ни в одном из текущих репозиториев Debian или Ubuntu, пакеты PHP должны быть получены из другого репозитория.

Ondřej Surý поддерживает архив пакетов, содержащий скомпилированные двоичные файлы всех текущих версий PHP для Ubuntu и Debian. Он также поставляет несколько расширений PECL, включая расширения PECL для расширений ядра PHP, не включённых в PHP 8.4.

После добавления этого репозитория начальная установка и обновление могут быть выполнены с помощью стандартных команд apt.

Ubuntu PPA
sudo LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php # Нажмите Enter для подтверждения.
sudo apt update
Debian PPA
sudo apt-get update
sudo apt-get -y install lsb-release ca-certificates curl apt-transport-https
sudo curl -sSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb
sudo dpkg -i /tmp/debsuryorg-archive-keyring.deb
sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
sudo apt-get update

3. Установка пакетов PHP 8.4 Server API

Установка только PHP-CLI

Чтобы установить PHP CLI, установите пакет php8.4-cli вместе с необходимыми расширениями.

sudo apt install php8.4-cli

PHP-CLI и PHP в качестве модуля Apache

Чтобы установить PHP CLI и PHP 8.4 в качестве модуля Apache, установите пакет libapache2-mod-php8.4:

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

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

PHP-CLI и PHP-FPM (рекомендуется)

Рекомендуется установить PHP-FPM для интеграции PHP с веб-серверами, такими как Apache, Nginx и Caddy.

sudo apt install php8.4-cli php8.4-fpm

Это установит службу php8.4-fpm и автоматически её включит. Дополнительные шаги, необходимые в дальнейшем, см. в разделе Интеграция с веб-сервером.

4. Проверка установки PHP 8.4

Чтобы быстро проверить установку PHP, выполните следующую команду:

php -v

Она должна показать версию PHP, время сборки и другую информацию:

Вывод `php -v`
Вывод php -v

Если сервис PHP-FPM установлен, его состояние можно проверить следующим образом:

sudo systemctl status php8.4-fpm

Если PHP-FPM сервер успешно запущен, на экране должно появиться сообщение, аналогичное приведённому ниже:

Вывод `systemctl status php8.4-fpm`
Вывод systemctl status php8.4-fpm

5. Установка расширений PHP

Все общие расширения PHP и расширения PECL следуют шаблону php8.4-EXTNAME, где extname — это имя расширения.

При обновлении существующей системы обратитесь к файлу packages.txt, созданному на первом шаге, чтобы проверить установленные расширения PHP 8.3 или более ранних версий.

Для установки расширения PHP используйте команду apt install с именем расширения PHP с префиксом php-8.4-. Например, расширение gd устанавливается с пакетом php8.4-gd:

sudo apt install php8.4-gd

Следующая команда устанавливает набор наиболее распространённых расширений PHP, необходимых для большинства библиотек и фреймворков PHP:

sudo apt install php8.4-common php8.4-{bcmath,bz2,curl,gd,gmp,intl,mbstring,opcache,readline,xml,zip}

Для поиска дополнительных расширений PHP используйте команду apt search:

apt search php8.4

Инструменты для разработки

Инструменты для разработки, такие как Xdebug и средства покрытия кода, также могут быть установлены в соответствии с тем же соглашением об именовании пакетов.

Этот шаг не рекомендуется выполнять на рабочих серверах.

Xdebug

sudo apt install php8.4-xdebug

PCOV

sudo apt install php8.4-xdebug

6. Интеграция с веб-сервером

В зависимости от серверного API, установленного на третьем шаге, интеграция веб-сервера может потребовать дополнительной настройки, чтобы обновление PHP 8.4 вступило в силу.

PHP-FPM

При использовании PHP-FPM (путём установки пакета php8.4-fpm) веб-сервер должен быть перенастроен на взаимодействие с сервером PHP 8.4 FPM по обновлённому пути к сокету.

Apache

Это изменение конфигурации легко осуществить, включив файл конфигурации PHP 8.4:

sudo a2enconf php8.4-fpm
Nginx

Обновите директиву fastcgi_pass со старого пути к сокету PHP FPM на новый путь PHP 8.4:

- fastcgi_pass unix:/run/php/php8.3-fpm.sock;
+ fastcgi_pass unix:/run/php/php8.4-fpm.sock;

Дополнительные сведения см. в документации по Nginx

Caddy

Обновите директиву reverse_proxy, для использования нового пути к сокету сервера PHP 8.4 FPM:

- reverse_proxy @phpFiles unix//run/php/php8.3-fpm.sock
+ reverse_proxy @phpFiles unix//run/php/php8.4-fpm.sock

PHP в качестве модуля Apache

Если PHP установлен как модуль Apache, следующая команда отключает предыдущий модуль PHP (8.3 в данном примере) и включает новую версию PHP:

sudo a2dismod php8.3 # Измените на текущую версию PHP
sudo a2enmod php8.4

Перенос конфигурации

Конфигурационные файлы для новой установки PHP будут находиться в каталоге /etc/php/8.4. Существующие установки PHP, скорее всего, установлены в каталогах /etc/php/VERSION.

При желании конфигурацию можно скопировать из более старых версий PHP. Копирование поверх существующих файлов не настроено. Вместо этого проверьте различия между двумя файлами php.ini и обновите файлы php.ini PHP 8.4.

Например, следующая команда сравнивает PHP 8.4 CLI php.ini с PHP 8.4:

diff /etc/php/8.3/cli/php.ini /etc/php/8.4/cli/php.ini

При использовании PHP-FPM обязательно обновите файл /etc/php/8.4/fpm/pool.d/www.conf, чтобы он соответствовал более старой конфигурации пула раннера PHP-FPM.

Удаление старых версий PHP

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

sudo apt purge '^php8.3.*'

В приведённом примере используется команда apt purge, в которой все пакеты PHP 8.3 имеют подстановочный знак.

Запуск PHP 8.4 вместе с другими версиями PHP

При желании установка PHP 8.4, описанная в шагах выше, может сосуществовать с другими версиями PHP.

При установке PHP 8.4 CLI будет установлен в каталог /usr/bin/php8.4. Другие версии PHP будут установлены в то же место с суффиксом имени версии (например, PHP 8.3 в /usr/bin/php8.3). Можно вызывать другие версии PHP CLI напрямую, обращаясь к этому пути.

По умолчанию имя команды php будет привязано к последней версии PHP. Однако используя команду update-alternatives, его можно изменить на любую другую версию PHP:

sudo update-alternatives --config php

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

There are 2 choices for the alternative php (providing /usr/bin/php).

Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/php8.4 84 auto mode
1 /usr/bin/php8.3 83 manual mode
2 /usr/bin/php8.4 84 manual mode

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

update-alternatives --set php /usr/bin/php8.4

Комментарии


Дополнительные материалы

Предыдущая Статья

Новое в Symfony 7.2: Опциональный секрет

Следующая Статья

Паттерны для эффективного манипулирования DOM с ванильным JavaScript