Заметки 29963 ~ 4 мин.

Как установить/обновить PHP 8.1 в Ubuntu/Debian

Как установить/обновить 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

Браво! Прекрасно изложенная и нужная информация.

fatal error30.08.2023

Спасибо! Полезная статья (помогла настроить).

Сергей26.03.2023

Здравствуйте.
Не подскажите, из-за чего не работает на php8.1 SMTP отправкаЖ SMTP Error: Could not connect to SMTP host.
Что-то недоустановлено на сервер?

Сергей Мухин 27.03.2023

Добрый день, Сергей,
99% проблема обычно в настройках данных: что-то заполнено неверно: хост, логин, пароль, порт, использование tls или ssl.

Дмитрий28.02.2023

Мировая литература. Кланюсь в ножищи.

Категории
  • PHP 67
  • Заметки 18
  • Безопасность 4
  • Флуд 2
  • Nginx 2
  • ИТ новости 2
  • Видео 1
  • Docker 1
  • Roadmap 1
  • Архитектура 0

Хочешь поддержать сайт?

Делаем из мухи слона

sergeymukhin.com

персональный блог о веб-разработке от Сергея Мухина. Блог был основан в 2018 году, и собирался уделять основное внимание последним тенденциям, учебным пособиям, а также советам и рекомендациям, позволяющим начинающим девелоперам встать быстрее на правильную дорогу веб разработки, но что-то пошло не так 😃

Релизы PHP 8.4

Дата Релиз
4 Июля 2024 Альфа 1
18 Июля 2024 Альфа 2
1 Августа 2024 Альфа 3
13 Августа 2024 Feature freeze
15 Августа 2024 Бета 1
29 Августа 2024 Бета 2
12 Сентября 2024 Бета 3
26 Сентября 2024 RC 1
10 Октября 2024 RC 2
24 Октября 2024 RC 3
7 Ноября 2024 RC 4
21 Ноября 2024 GA

Что нового?