Установка PHP 8.1 на Ubuntu

Пошаговая инструкция (себе на память).

Вышел PHP 8.1 с новыми функциями, улучшениями и устаревшей функциональностью. Установка PHP 8.1 в новую систему или обновление существующей установки PHP до PHP 8.1 упрощается в системах на основе Ubuntu и Debian с помощью предварительно скомпилированных двоичных файлов.

Ни один из текущих репозиториев программного обеспечения Ubuntu или Debian не предлагает PHP 8.1 в своих репозиториях программного обеспечения по умолчанию. Тем не менее, Ondřej Surý продолжает делать версии PHP доступными в виде репозитория программного обеспечения Debian/Ubuntu, и теперь доступны пакеты PHP 8.1.

Что нового и измененного в PHP 8.1

PHP 8.1 содержит несколько новых функций, улучшений и функций, которые помечены как устаревшие.

Изменения расширений и зависимостей в PHP 8.1

  • Расширение GD поддерживает формат изображений AVIF из PHP 8.1, если расширение скомпилировано с поддержкой изображений AVIF. Однако приведенное ниже руководство по установке не включает поддержку образов AVIF.
  • Расширение Curl поддерживает DNS over HTTPS (DoH). Для этой функции требуется версия Curl 7.62 или более поздняя, и она не будет доступна в более старых версиях Debian/Ubuntu, в которые не входит версия Curl более поздняя, чем 7.62. Например, эта функция будет недоступна в Ubuntu 18.04.

Изменения директивы INI

  • `date_sunrise`, `date_sunset` functions and related INI settings are deprecated (https://php.watch/versions/8.1/date_sunrise-date_sunset-funcs-deprecated)
  • `filter.default` and `filter.default_options` INI settings are deprecated (https://php.watch/versions/8.1/filter.default-filter.default_options-deprecated)
  • `auto_detect_line_endings` INI directive is deprecated (https://php.watch/versions/8.1/auto_detect_line_endings-ini-deprecated)

Итак, приступим.

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

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

В системах, в которых PHP 8.1 устанавливается в первый раз, это шаг не обязателен.

dpkg -l | grep php | tee packages.txt

Эта команда отобразит в терминале установленные в системе пакеты PHP, а также сохранит это список в файле packages.txt в текущей директории.

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

(Personal Packages Archive – персональный архив пакетов)

На сегодняшний день ни один из репозиториев программного обеспечения в Ubuntu или Debian по умолчанию не включает PHP 8.1.

Ondřej Surý поддерживает архив пакетов, который содержит скомпилированные двоичные файлы всех текущих версий PHP для вышеуказанных операционных систем.

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

Ubuntu

sudo add-apt-repository ppa:ondrej/php # Press enter when prompted.
sudo apt update

Debian

sudo apt install apt-transport-https lsb-release ca-certificates wget -y
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg 
sudo sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
sudo apt update

Вышеуказанные команды добавят PPA в качестве источника пакетов, который содержит все пакеты PHP и их зависимости, такие как argon2 и libzip.

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

Все пакеты в PHP 8.1 имеют следующий шаблон: php8.1-NAME
Дополнительные расширения (такие как GD, Curl и т. д.) могут быть установлены как программные пакеты после их имени (php8.1-gdphp8.1-curl и т. д.).

  • php8.1 — это метапакет, который совместно устанавливает несколько зависимостей, таких как php8.1-cli и php8.1-readline, а также вспомогательные пакеты, такие как apache2, если один из php8.1-cliphp8.1-fpm, или libapache2-mod-php8.1 явно не запрашивается.
  • php8.1-common — это метапакет, который устанавливает большинство широко используемых расширений PHP за один раз. Он автоматически устанавливает такие пакеты, как php8.1-pdophp8.1-tokenizer и другие полезные расширения.

Установка PHP 8.1 с помощью CLI

sudo apt install php8.1-common php8.1-cli -y

Эта команда установит несколько расширений PHP из-за php8.1-common и CLI для PHP 8.1.

Подтвердите установку, запустив:

php -v # Show PHP version.
php -m # Show PHP modules loaded.

Дополнительные расширения

Вы можете установить дополнительные расширения из того же шаблона php8.1-NAME. Обратитесь к файлу packages.txt, чтобы просмотреть список существующих пакетов, если вы обновляете существующую систему.

Обратите внимание, что начиная с PHP 8.0 расширение JSON входит в комплект и устанавливается неявно.

Пример установки еще нескольких полезных расширений:

sudo apt install php8.1-{bz2,curl,intl,xml}

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

Для сред разработки также можно установить инструменты покрытия кода или отладчик Xdebug.

sudo apt install php8.1-pcov # PCOV code coverage tool
sudo apt install php8.1-xdebug # Xdebug debugger

Это не рекомендуется для рабочих серверов (production servers).

Установка серверных API

В зависимости от используемого веб-сервера вам потребуется установить дополнительные пакеты для интеграции с веб-сервером.

Для Apache, использующих mpm_eventNginxLitespeed и т. д., пакет php8.1-fpm обеспечивает интеграцию с PHP 8.1 через FPM.

sudo apt install php8.1-fpm

Для Apache, использующего mod_php, установите libapache2-mod-php8.1.

sudo apt install libapache2-mod-php8.1

Обратите внимание, что Apache2Handler переименован в php_module из php7_module в PHP 8.0. Пакет libapache2-mod-php8.1 автоматически настраивает расположение модуля Apache, но если вы обновляете существующую установку PHP, вам может потребоваться обновить файлы конфигурации; в частности блоков.

4. Тестирование (проверка) установленного PHP 8.1

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

php -v
php -m

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

Если новая версия PHP работает должным образом, вы можете удалить старые пакеты PHP из системы:

sudo apt purge '^php8.0.*'

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

Вместо удаления старых версий, PHP также можно запускать одновременно несколько версий.

Интерфейс командной строки PHP 8.1 будет установлен по умолчанию в каталоге /usr/bin/php8.1. Точно так же другие бинарные файлы PHP будут расположены в том же каталоге (/usr/bin/php8.0/usr/bin/php7.4 и т. д.). Имя php по умолчанию будет символически связано с последней версией PHP по умолчанию, но можно изменить ссылку, на которую ссылается команда php по умолчанию.

Команда pdate-alternatives предоставляет простой способ переключения между версиями PHP для PHP CLI.

sudo update-alternatives --config php

Эта команда показывает интерактивное приглашение, с помощью которого можно выбрать какую версию PHP следует запускать.

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

  Selection    Path             Priority   Status
------------------------------------------------------------
* 0            /usr/bin/php8.1   81        auto mode
  1            /usr/bin/php8.0   80        manual mode
  2            /usr/bin/php8.1   81        manual mode

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

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

Leave a Reply

Your email address will not be published. Required fields are marked *