Пошаговая инструкция (себе на память).
Вышел 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-gd
, php8.1-curl
и т. д.).
-
php8.1
— это метапакет, который совместно устанавливает несколько зависимостей, таких какphp8.1-cli
иphp8.1-readline
, а также вспомогательные пакеты, такие какapache2
, если один изphp8.1-cli
,php8.1-fpm
, илиlibapache2-mod-php8.1
явно не запрашивается. -
php8.1-common
— это метапакет, который устанавливает большинство широко используемых расширений PHP за один раз. Он автоматически устанавливает такие пакеты, какphp8.1-pdo
,php8.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_event
, Nginx, Litespeed и т. д., пакет 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