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

Читайте также:  Using java and excel

Вам нужно повторно запустить команду моделирования, но на этот раз удалите виртуальный пакет 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. Проверьте установку#

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

Читайте также:  Doctype html ng app

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

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

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

Источник

Как установить/обновить PHP 8.0 (Debian/Ubuntu/Mint)

Как установить/обновить PHP 8.0 (Debian/Ubuntu/Mint)

PHP 8.0 содержит много новых функций и улучшений производительности, синтаксиса, безопасности и стабильности. Установка PHP 8.0 практически на любой сервер упрощается благодаря предварительно скомпилированным пакетам, доступным во всех поддерживаемых в настоящее время версиях Debian и Ubuntu.

Изменения расширений и зависимостей в PHP 8.0

Несмотря на огромное количество изменений в PHP 8.0, в принципе было произведено не так много изменений в его зависимостях и структуре расширений.

Расширение JSON теперь всегда доступно , и нет флага компиляции для его исключения. Это означает, что больше нет необходимости явно устанавливать пакет php-json.

Расширение xmlrpc перемещено в PECL по уважительным причинам. Репозитории программного обеспечения, упомянутые в этом посте, не включают xmlrpc расширения для PHP 8.0.

Кроме того, в Windows название расширения GD было изменено с php_gd2.dll на php_gd.dll.

Изменения в файле INI PHP 8.0

Также есть несколько изменений в файле INI.

  • По умолчанию утверждения вызывают исключения — ( assert.exception=1)
  • Отображение ошибок по умолчанию установлено на E_ALL — ( error_reporting=-1)
  • При запуске теперь по умолчанию ошибки включены — ( display_startup_errors=1)
  • Новая функция JIT в PHP 8.0 добавляет несколько новых директив INI.
  • Параметр zend.exception_string_param_max_len для настраиваемой длины строки трассировки стека исключений

Установка PHP 8

1. Необходимо добавить репозиторий ondrej/phpPPA

sudo apt-get install software-properties-common 
sudo add-apt-repository ppa:ondrej/php
sudo apt-get 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.

Читайте также:  HTML Document

2. Установите PHP 8.0 и нужные расширения

Все пакеты PHP 8.0 следуют шаблону php8.0-имя_расширения , и пакет php8.0-common включает необходимый набор расширений по умолчанию.

sudo apt install php8.0-common

Установите PHP 8.0 CLI для работы в консоли

sudo apt install php8.0-cli

Вы можете установить дополнительные расширения по тому же шаблону php8.0-имя_расширения. Обратите внимание, что вам не нужно устанавливать, так php8.0-json, так как теперь он включен по умолчанию.

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

Для разработки также могут быть установлены инструменты покрытия кода или отладчик Xdebug.

sudo apt install php8.0-pcov # PCOV code coverage tool 
sudo apt install php8.0-xdebug # Xdebug debugger

Установка PHP8 fpm

В зависимости от используемого веб-сервера вам необходимо будет установить дополнительные пакеты для интеграции с веб-сервером.

Для использования Apache mpm_event, Nginx, Litespeed и т. д. нужно будет установить php8.0-fpm

sudo apt install php8.0-fpm

Для использования Apache mod_php установите libapache2-mod-php8.0

sudo apt install libapache2-mod-php8.0

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

# php -v 
PHP 8.0.0 (cli) (built: Nov 26 2020 18:04:36) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.0, Copyright (c) Zend Technologies

# php -m
[PHP Modules]
Core
ctype
curl
.

Если вам потребуется удалить старые пакеты PHP, можно воспользоваться командой

Это предполагает, что вы используете PHP 7.4 в качестве предыдущей версии. Но будьте осторожны, сначала сто раз проверьте что вы больше не используете старые версии в своих проектах.

Смена установленной версий PHP по умолчанию.

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

sudo update-alternatives --config php
Есть 7 вариантов для альтернативы php (предоставляет /usr/bin/php). 

Выбор Путь Приор Состояние
------------------------------------------------------------
0 /usr/bin/php8.0 80 автоматический режим
1 /usr/bin/php5.6 56 ручной режим
2 /usr/bin/php7.0 70 ручной режим
3 /usr/bin/php7.1 71 ручной режим
4 /usr/bin/php7.2 72 ручной режим
5 /usr/bin/php7.3 73 ручной режим
* 6 /usr/bin/php7.4 74 ручной режим
7 /usr/bin/php8.0 80 ручной режим

Press to keep the current choice[*], or type selection number: 6

И введя номер нужной вам предыдущей версии PHP.

Источник

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