Linux обновить версию php

Как обновить PHP 8.1 до PHP 8.2 на Ubuntu 22.04 с Nginx

PHP 8.2 — это значительное обновление языка PHP, содержащее множество новых функций и оптимизаций. Однако Ubuntu 22.04 LTS включает в свои официальные репозитории только PHP 8.1. В этом руководстве объясняется, как обновить PHP до версии 8.2 и настроить Nginx для его использования.

Предпосылки#

Существующий веб-сайт, работающий с Nginx и PHP 8.1 на сервере Ubuntu 22.04.

Просмотрите руководство по миграции в Руководстве по PHP, чтобы убедиться, что исходный код вашего веб-сайта совместим с PHP 8.2.

1. Список установленных пакетов PHP 8.1#

  1. Войдите на сервер как пользователь sudo без полномочий root через SSH.
  2. Перечислите все пакеты PHP 8.1, установленные в вашей системе.
ii php8.1-cli 8.1.3-4ubuntu2.6 amd64 command-line interpreter for the PHP scripting language ii php8.1-common 8.1.3-4ubuntu2.6 amd64 documentation, examples and common module for PHP ii php8.1-curl 8.1.3-4ubuntu2.6 amd64 CURL module for PHP ii php8.1-fpm 8.1.3-4ubuntu2.6 amd64 server-side, HTML-embedded scripting language (FPM-CGI binary) ii php8.1-gd 8.1.3-4ubuntu2.6 amd64 GD module for PHP ii php8.1-json 8.1.3-4ubuntu2.6 amd64 JSON module for PHP ii php8.1-mbstring 8.1.3-4ubuntu2.6 amd64 MBSTRING module for PHP ii php8.1-mysql 8.1.3-4ubuntu2.6 amd64 MySQL module for PHP ii php8.1-opcache 8.1.3-4ubuntu2.6 amd64 Zend OpCache module for PHP 

Второй столбец содержит имена установленных пакетов.

  1. Передайте приведенный выше вывод командам cut , xargs и sed соответственно, чтобы сгенерировать список соответствующих пакетов PHP 8.2.
$ dpkg -l | grep php8.1 | cut -f3 -d' ' | xargs | sed 's/8.1/8.2/g' 

Результат выглядит следующим образом:

php8.2-cli php8.2-common php8.2-curl php8.2-fpm php8.2-gd php8.2-json php8.2-mbstring php8.2-mysql php8.2-opcache 

Используйте свой вывод при установке PHP 8.2.

$ php-fpm8.1 -m > ~/php-fpm8.1.modules 

Вы будете использовать этот файл, чтобы убедиться, что после обновления все модули отсутствуют.

2. Установите пакеты PHP 8.2#

Вы можете установить PHP 8.2 из репозитория ppa:ondrej/php, разработанного Ондржея Сури, который предоставляет последние стабильные версии PHP для систем Ubuntu и Debian.

$ sudo LC_ALL=C.UTF-8 add-apt-repository -y ppa:ondrej/php 
$ sudo apt --simulate install php8.2-

Если вы получаете такую ​​ошибку:

E: Пакет 'php8.2-json' не имеет кандидата на установку 

Это означает, что список пакетов содержит виртуальный пакет с именем php8.2-json .

Читайте также:  Облачное хранилище в линукс

Вам нужно повторно запустить команду моделирования, но на этот раз удалите виртуальный пакет php8.2-json из списка пакетов. Повторяйте до тех пор, пока в списке не останется виртуальных пакетов.

  1. Установите пакеты PHP 8.2 с уточненным списком. Обратите внимание, что команда установки не содержит опции —simulate .
$ php-fpm8.2 -m > ~/php-fpm8.2.modules 
$ diff ~/php-fpm8.1.modules ~/php-fpm8.2.modules 

Если вы получаете пустой вывод, это означает, что после обновления не пропало ни одного модуля.

3. Настройте Nginx#

Nginx и PHP-FPM 8.1 взаимодействуют друг с другом через сокет, созданный PHP-FPM 8.1. Поэтому, чтобы переключиться на PHP-FPM 8.2, вам нужно настроить новый сокет для PHP-FPM 8.2 и перенастроить Nginx с этим сокетом.

$ sudo grep -R fastcgi_pass /etc/nginx/sites-enabled/ | grep -Ev '#\s+fastcgi_pass' 

Если это сокет Unix, вывод будет выглядеть так:

/etc/nginx/sites-enabled/default: fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; 

Если это сокет TCP, вывод будет выглядеть так:

/etc/nginx/sites-enabled/default: fastcgi_pass 127.0.0.1:9000; 

В обоих случаях /etc/nginx/sites-enabled/default — это файл конфигурации Nginx, который вам нужно отредактировать, а /var/run/php/php8.1-fpm.sock или 127.0.0.1:9000 — это сокет.

У вас может быть другое имя файла или более одного имени файла. Замените default в следующей команде файлами, найденными в вашей системе.

$ sudo mkdir /etc/nginx/sites-backup 
$ sudo cp -L /etc/nginx/sites-enabled/* /etc/nginx/sites-backup 
  1. Отредактируйте файл конфигурации, заменив старый сокет новым.
  • Если старым сокетом является /var/run/php/php8.1-fpm.sock , новым должен быть /var/run/php/php8.2-fpm.sock .
$ sudo sed -i --follow-symlinks \ 's|php8.1-fpm.sock|php8.2-fpm.sock|g' \ /etc/nginx/sites-enabled/default 
$ sudo sed -i --follow-symlinks \ 's|127.0.0.1:9000|127.0.0.1:9001|g' \ /etc/nginx/sites-enabled/default 

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

4. Настройте PHP 8.2#

$ sudo cp -rL /etc/php/8.1/fpm/pool.d/* /etc/php/8.2/fpm/pool.d/ 
  1. Найдите файл конфигурации, содержащий определение старого сокета.
  • Если старый сокет /var/run/php/php8.1-fpm.sock :
$ sudo grep -rl 'php8.1-fpm.sock' /etc/php/8.2/fpm/pool.d 
$ sudo grep -rl '127.0.0.1:9000' /etc/php/8.2/fpm/pool.d 

В обоих случаях результаты одинаковы, примерно так:

  1. Отредактируйте файл конфигурации, заменив старый сокет новым.
  • Если старый сокет /var/run/php/php8.1-fpm.sock :
$ sudo sed -i 's|php8.1-fpm.sock|php8.2-fpm.sock|g' /etc/php/8.2/fpm/pool.d/www.conf 
$ sudo sed -i 's|127.0.0.1:9000|127.0.0.1:9001|g' /etc/php/8.2/fpm/pool.d/www.conf 
  1. Вам также может понадобиться настроить некоторые параметры в основном файле конфигурации PHP 8.2, чтобы они соответствовали требованиям вашего веб-сайта. Общие настройки для большинства веб-сайтов PHP:
max_execution_time memory_limit post_max_size upload_max_filesize date.timezone 

Вы можете найти необходимые настройки в основном файле конфигурации PHP 8.1 /etc/php/8.1/fpm/php.ini , а затем скопировать эти настройки в основной файл конфигурации PHP 8.2 /etc/php/8.2/fpm/php.ini .

$ sudo systemctl reload php8.2-fpm.service 
$ sudo systemctl reload nginx.service 
$ sudo systemctl disable --now php8.1-fpm.service 

5. Проверьте установку#

Откройте свой сайт в браузере. Протестируйте и убедитесь, что все функции работают должным образом.

Если вы решили удалить PHP 8.1, сделайте следующее:

$ sudo rm -fr /etc/nginx/sites-backup 

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

Читайте также:  Radmin viewer on linux

Источник

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

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

sudo add-apt-repository ppa:ondrej/php # Press enter when prompted. 
sudo apt update
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 входит в комплект и устанавливается неявно.

Читайте также:  Настройка вай фай линукс минт

Пример установки еще нескольких полезных расширений:

Для сред разработки также могут быть установлены инструменты покрытия кода или отладчик 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, возможно , потребуется обновление конфигурационных файлов; в частности блоки .

4. Протестируйте установку PHP 8.1

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

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 в качестве предыдущей версии, сделать это можно с помощью команды (Осторожно! Не удаляйте старую версию, не убедившись, что ни одно из ваших приложений не использует эту версию):

Запуск 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 ручной режим

Источник

Оцените статью
Adblock
detector