В этой статье мы рассмотрим этапы установки PHP 8.2 на Ubuntu 22.04|20.04|18.04. Версия PHP по умолчанию, доступная в репозиториях ОС, обычно старше последних официальных выпусков PHP. Репозитории программного обеспечения PPA (Personal Package Archive) для PHP позволяют вам устанавливать более новые версии PHP в вашей системе Ubuntu, которые недоступны в официальных репозиториях дистрибутива Linux.

Шаг 1: Обновите систему Ubuntu

Проверьте наличие обновлений и установите их, прежде чем выполнять какие-либо другие действия.

sudo apt update && sudo apt -y upgrade

Очистите кеш APT после обновления.

sudo apt autoremove

Проверьте, требуется ли перезагрузка, и действуйте соответствующим образом.

[ -f /var/run/reboot-required ] && sudo reboot -f

Сведения о выпуске ОС можно проверить с помощью приведенных здесь команд.

$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.1 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.1 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

Шаг 2: Добавьте репозиторий Surý PHP APT

Чтобы установить пакеты PHP 8.2 в Ubuntu, мы будем использовать PHP PPA Ондржея Сури, который предоставляет последние стабильные версии PHP для систем Ubuntu и Debian.

Установите несколько пакетов зависимостей перед добавлением репо.

sudo apt update
sudo apt install -y lsb-release gnupg2 ca-certificates apt-transport-https software-properties-common

Выполните следующие команды в своем терминале, чтобы добавить Surý PPA в вашу систему.

sudo add-apt-repository ppa:ondrej/php

Ожидается успешное выполнение команды.

PPA publishes dbgsym, you may need to include 'main/debug' component
Repository: 'deb https://ppa.launchpadcontent.net/ondrej/php/ubuntu/ jammy main'
Description:
Co-installable PHP versions: PHP 5.6, PHP 7.x and most requested extensions are included. Only Supported Versions of PHP (http://php.net/supported-versions.php) for Supported Ubuntu Releases (https://wiki.ubuntu.com/Releases) are provided. Don't ask for end-of-life PHP versions or Ubuntu release, they won't be provided.

Debian oldstable and stable packages are provided as well: https://deb.sury.org/#debian-dpa

You can get more information about the packages at https://deb.sury.org

IMPORTANT: The <foo>-backports is now required on older Ubuntu releases.

BUGS&FEATURES: This PPA now has a issue tracker:
https://deb.sury.org/#bug-reporting

CAVEATS:
1. If you are using php-gearman, you need to add ppa:ondrej/pkg-gearman
2. If you are using apache2, you are advised to add ppa:ondrej/apache2
3. If you are using nginx, you are advised to add ppa:ondrej/nginx-mainline
   or ppa:ondrej/nginx

PLEASE READ: If you like my work and want to give me a little motivation, please consider donating regularly: https://donate.sury.org/

WARNING: add-apt-repository is broken with non-UTF-8 locales, see
https://github.com/oerdnj/deb.sury.org/issues/56 for workaround:

# LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php
More info: https://launchpad.net/~ondrej/+archive/ubuntu/php
Adding repository.
Press [ENTER] to continue or Ctrl-c to cancel.
Adding deb entry to /etc/apt/sources.list.d/ondrej-ubuntu-php-jammy.list
Adding disabled deb-src entry to /etc/apt/sources.list.d/ondrej-ubuntu-php-jammy.list
Adding key to /etc/apt/trusted.gpg.d/ondrej-ubuntu-php.gpg with fingerprint 14AA40EC0831756756D7F66C4F4EA0AAE5267A6C
Hit:1 https://mirror.hetzner.com/ubuntu/packages jammy InRelease
Hit:2 https://mirror.hetzner.com/ubuntu/packages jammy-updates InRelease
Hit:3 https://mirror.hetzner.com/ubuntu/packages jammy-backports InRelease
Hit:4 https://mirror.hetzner.com/ubuntu/security jammy-security InRelease
Get:5 https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy InRelease [23.9 kB]
Get:6 https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy/main amd64 Packages [108 kB]
Get:7 https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy/main Translation-en [33.3 kB]
Fetched 166 kB in 1s (120 kB/s)
Reading package lists... Done

Вы можете вручную подтвердить, работает ли репозиторий, выполнив команду apt update.

$ sudo apt update
Hit:1 https://mirror.hetzner.com/ubuntu/packages jammy InRelease
Hit:2 https://mirror.hetzner.com/ubuntu/packages jammy-updates InRelease
Hit:3 https://mirror.hetzner.com/ubuntu/packages jammy-backports InRelease
Hit:4 https://mirror.hetzner.com/ubuntu/security jammy-security InRelease
Hit:5 https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done

Шаг 3: Установите PHP 8.2 на Ubuntu 22.04/20.04/18.04

После добавления PPA используйте команду apt для установки PHP 8.2 и любых других связанных модулей PHP на сервере Ubuntu.

sudo apt install php8.2

Примите установку пакета в соответствии с запросом через приглашение.

The following additional packages will be installed:
  apache2 apache2-bin apache2-data apache2-utils bzip2 file libapache2-mod-php8.2 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.3-0 mailcap mime-support php-common
  php8.2-cli php8.2-common php8.2-opcache php8.2-readline ssl-cert
Suggested packages:
  apache2-doc apache2-suexec-pristine | apache2-suexec-custom www-browser bzip2-doc php-pear
The following NEW packages will be installed:
  apache2 apache2-bin apache2-data apache2-utils bzip2 file libapache2-mod-php8.2 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.3-0 mailcap mime-support php-common php8.2
  php8.2-cli php8.2-common php8.2-opcache php8.2-readline ssl-cert
0 upgraded, 21 newly installed, 0 to remove and 2 not upgraded.
Need to get 6,990 kB of archives.
After this operation, 29.8 MB of additional disk space will be used.
Do you want to continue? [Y/n] y

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

$ php -v

Шаг 4: Установите модули PHP 8.2 в Ubuntu

Модули PHP — это программные библиотеки, созданные для расширения функциональности PHP. Эти модули обычно написаны на C, и вы можете динамически загружать их в PHP или компилировать как общие объекты.

Если вы хотите установить модули PHP 8.2 в системе Ubuntu, используйте диспетчер пакетов apt с приведенным здесь синтаксисом команды:

sudo apt install -y php8.2-<module-name>

Где:

  • заменяется фактическим именем устанавливаемого модуля.

В этом примере мы устанавливаем модуль fpm PHP 8.2 из добавленного ранее PPA.

$ sudo apt install php8.2-fpm
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Suggested packages:
  php-pear
The following NEW packages will be installed:
  php8.2-fpm
0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
Need to get 1,886 kB of archives.
After this operation, 5,756 kB of additional disk space will be used.
Get:1 https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy/main amd64 php8.2-fpm amd64 8.2.1-2+ubuntu22.04.1+deb.sury.org+1 [1,886 kB]
Fetched 1,886 kB in 0s (5,211 kB/s)
Selecting previously unselected package php8.2-fpm.
(Reading database ... 56412 files and directories currently installed.)
Preparing to unpack .../php8.2-fpm_8.2.1-2+ubuntu22.04.1+deb.sury.org+1_amd64.deb ...
Unpacking php8.2-fpm (8.2.1-2+ubuntu22.04.1+deb.sury.org+1) ...
Setting up php8.2-fpm (8.2.1-2+ubuntu22.04.1+deb.sury.org+1) ...
....

Установка часто используемых модулей.

sudo apt install php8.2-{bcmath,fpm,xml,mysql,zip,intl,ldap,gd,cli,bz2,curl,mbstring,pgsql,opcache,soap,cgi}

Список установленных модулей можно просмотреть командой:

$ php -m
[PHP Modules]
bcmath
bz2
calendar
Core
ctype
curl
date
dom
exif
FFI
fileinfo
filter
ftp
gd
gettext
hash
iconv
intl
json
ldap
libxml
mbstring
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_pgsql
pgsql
Phar
posix
readline
Reflection
session
shmop
SimpleXML
soap
sockets
sodium
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
xml
xmlreader
xmlwriter
xsl
Zend OPcache
zip
zlib

[Zend Modules]
Zend OPcache

Шаг 5: Использование PHP с веб-сервером Nginx/Apache

Мы рассмотрим конфигурации веб-серверов Nginx и Apache для размещения вашего PHP-приложения.

Размещение PHP-приложения на веб-сервере Nginx

В Nginx код PHP обычно выполняется отдельным процессом, например PHP-FPM (FastCGI Process Manager). PHP-FPM — это демон, который прослушивает входящие запросы PHP и запускает их в отдельном процессе. Nginx просто перенаправляет входящие запросы в PHP-FPM, где они выполняются.

Установите веб-сервер Nginx и расширение FPM.

sudo apt install nginx php8.2-fpm

Откройте конфигурацию вашего сервера Nginx и добавьте следующий блок в блок http, чтобы настроить PHP-запросы, которые будут пересылаться для выполнения PHP-FPM:

$ sudo vim /etc/nginx/nginx.conf
server {
    listen 80;
    server_name mysite.example.com;
    root /var/www/mysite;
    index index.php index.html;

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
    }
}

Подтвердите, что конфигурация Nginx в порядке.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Размещение PHP-приложения на веб-сервере Apache

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

Но сначала вам нужно установить пакет веб-сервера Apache, PHP и расширение Apache PHP:

sudo apt install apache2 libapache2-mod-php8.2 

Включить модуль mod_php:

sudo a2enmod php8.2

Перезапустите веб-сервер Apache после настройки.

sudo systemctl restart apache2

Подведение итогов

В заключение, установка PHP 8.2 в системе Ubuntu 22.04/20.04/18.04 Linux — это простой процесс. Мы начали с добавления PHP PPA Ондржея Сурого в исходники пакетов системы, что позволило нам установить PHP 8.2 и другие модули. Добавление стороннего PPA к рабочему серверу может привести к риску стабильности и безопасности, и их всегда следует использовать с осторожностью. Если вы выполняете обновление PHP, рассмотрите возможность резервного копирования важных файлов перед обновлением вашей системы на случай, если что-то пойдет не так в процессе обновления.

Если вам понравился этот пост о том, как установить PHP 8.2 на Ubuntu 22.04, поделитесь им с друзьями в социальных сетях. Спасибо.