Страница 1 из 1

Как установить PHP 8.2 в Ubuntu 22.04|20.04

Добавлено: 13 окт 2024, 20:17
ALEXX
PHP 8.2 — это версия языка программирования PHP, выпущенная ближе к концу 2022 года. Это основная версия PHP, которая содержит множество новых функций, включая классы только для чтения, null, false и true как отдельные типы, устаревшие динамические свойства. , улучшения производительности и многое другое . PHP 8.2 также включает исправления ошибок и улучшения производительности по сравнению с предыдущими версиями, такими как 8.1. Мы рекомендуем вам протестировать свою кодовую базу с PHP 8.2 перед обновлением в производственной среде, просто чтобы убедиться, что все работает как положено.

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

Обновите систему 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

Код: Выделить всё

Добавить репозиторий 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
Установите PHP 8.2 в Ubuntu

После добавления 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
PHP 8.2.21 (cli) (built: Jul  4 2024 16:26:49) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.21, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.21, Copyright (c), by Zend Technologies
Вы также можете получить информацию о версии PHP, активной в данный момент и используемой вашей системой, с помощью команды:

Код: Выделить всё

php --version

Код: Выделить всё

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

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

Код: Выделить всё

sudo apt install -y php8.2-<module-name>
Где <имя-модуля> заменяется фактическим именем устанавливаемого модуля.

В этом примере мы устанавливаем модуль PHP 8.2 fpm из 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

Код: Выделить всё

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

Хостинг PHP-приложения на веб-сервере Nginx

В Nginx код PHP обычно выполняется отдельным процессом, например PHP-FPM (менеджер процессов FastCGI). 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