Как установить/обновить PHP 8.1 в Ubuntu/Debian
Установка PHP 8.1 в новой системе или обновление существующей установки PHP до PHP 8.1 достаточно проста в системах на основе Ubuntu и Debian с помощью предварительно скомпилированных файлов
PHP 8.1 уже выпущен с новыми функциями, улучшениями и устаревшими функциональными возможностями.
На сегодняшний момент ни один из текущих репозиториев программного обеспечения Ubuntu или Debian не предлагает PHP 8.1 в своих репозиториях программного обеспечения по умолчанию. Однако Ондржей Сури продолжает делать версии PHP доступными в виде репозитория программного обеспечения Debian/Ubuntu, и теперь доступны пакеты PHP 8.1.
Прежде чем приступить к установке, необходимо ознакомиться со списком изменений и устареванием конфигурационных файлов и расширений.
Изменения расширений и зависимостей PHP 8.1
Расширение Curl поддерживает DNS через HTTPS (DoH), начиная с PHP 8.1. Для этой функции требуется Curl версии 7.62 или более поздней, и она будет недоступна в более старых версиях Debian/Ubuntu, которые не включают в себя версию Curl более позднюю, чем 7.62. Например, эта функция будет недоступна в Ubuntu 18.04.
Изменения в директиве INI PHP 8.1
- функции date_sunrise, date_sunset и соответствующие им настройки INI - устарели
- настройки filter.default и filter.default_options INI - устарели
- Директива auto_detect_line_endings INI - устарела
Итак, приступим к установке PHP 8.1.
1.Перечислите существующие пакеты PHP
При обновлении существующей версии PHP проще перечислить существующие расширения PHP, установленные как пакеты программного обеспечения, чтобы они соответствовали списку расширений PHP 8.1. В системах, которые устанавливают PHP 8.1 заново, этот шаг не требуется.
dpkg -l | grep php | tee packages.txt
Эта команда выводит список всех установленных пакетов PHP, отображает их на экране и сохраняет в файл с именем packages.txt в текущем рабочем каталоге.
2. Добавить PPA ondrej/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, а также некоторые вспомогательные пакеты.
- php8.1-common - это также мета-пакет, который устанавливает большинство широко используемых расширений PHP за один раз. Он автоматически устанавливает пакет, например php8.1-pdo, php8.1-tokenizer и другие полезные расширения.
sudo apt install php8.1 php8.1-common php8.1-cli -y
Эта команда установит несколько расширений PHP - php8.1-common и CLI для PHP 8.1. После установки, можно проверить наличие установленных модулей, запустив:
php -v # Показать версию PHP .
php -m # Показать установленные и загруженные модули PHP.
Вы можете установить дополнительные расширения по тому же шаблону 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
Внимание! Эти расширения не рекомендуется устанавливать на продакшн серверах.
В зависимости от используемого веб-сервера вам потребуется установить дополнительные пакеты для интеграции с веб-сервером.
Для использования 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
Обратите внимание, что обработчик Apache2 переименован из php7_module в php_module для PHP 8.0. Пакет автоматически настраивает расположение модуля Apache, но если вы обновляете с существующей установки PHP, возможно , потребуется обновление конфигурационных файлов; в частности блоки <IfModule>.
4. Протестируйте установку PHP 8.1
Чтобы убедиться, что все установлено, можно так же проверить установку PHP и расширений, выполните следующие команды:
php -v
php -m
PHP 8.0.13 (cli) (built: Nov 22 2021 09:50:43) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.13, Copyright (c) Zend Technologies
with Zend OPcache v8.0.13, Copyright (c), by Zend Technologies
with Xdebug v3.1.1, Copyright (c) 2002-2021, by Derick Rethans
[PHP Modules]
apcu
calendar
Core
ctype
curl
date
dom
exif
FFI
...
[Zend Modules]
Xdebug
Zend OPcache
Очистить старые версии PHP
Если новая установка работает должным образом, вы можете удалить старые пакеты PHP из системы. Например, если вы используете PHP 8.0 в качестве предыдущей версии, сделать это можно с помощью команды (Осторожно! Не удаляйте старую версию, не убедившись, что ни одно из ваших приложений не использует эту версию):
sudo apt purge '^php8.0.*'
Запуск PHP 8.1 с другими версиями
Вместо удаления старых версий PHP можно также запускать несколько версий PHP параллельно. Команда update-alternatives обеспечивает простой способ переключения между версиями PHP для PHP CLI.
sudo update-alternatives --config php
Есть 5 вариантов для альтернативы php (предоставляет /usr/bin/php).
Выбор Путь Приор Состояние
------------------------------------------------------------
0 /usr/bin/php8.1 81 автоматический режим
1 /usr/bin/php7.2 72 ручной режим
2 /usr/bin/php7.3 73 ручной режим
3 /usr/bin/php7.4 74 ручной режим
* 4 /usr/bin/php8.0 80 ручной режим
5 /usr/bin/php8.1 81 ручной режим
danil15.12.2023
Браво! Прекрасно изложенная и нужная информация.