Обновление до PHP8.1 на CentOS 7.x

Недавно вышедший Laravel 9 прекратил поддержку PHP7.x, и теперь он может работать только на PHP8.0-PHP8.1.

PHP8.1 поставляется с несколькими хорошими возможностями, такими как Enums, readonly свойство класса и др. Введение Enums наконец-то позволяет вам указывать допустимые значения, принимаемые переменной, а не прибегать к использованию подсказок типа из докблока или сторонних пакетов «fake enum».

Давайте рассмотрим, как обновить наш сервер до PHP8.1 с PHP8.0.

sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum -y install yum-utils

sudo yum-config-manager --disable 'remi-php*'
sudo yum-config-manager --enable remi-php81

sudo yum install -y php81-php php81-php-fpm php81-php-mysql php81-php-gd php81-php-curl php81-php-mbstring php81-php-xml php81-php-bcmath php81-php-sqlite3 php81-php-zip
Вход в полноэкранный режим Выход из полноэкранного режима

Во время обновления возникли две проблемы

1. Конфликты библиотек

file /usr/lib64/libzip.so.5 from install of libzip5-1.8.0-2.el7.remi.x86_64 conflicts with file from package libzip-1.3.2-1.amzn2.0.1.x86_64

Решение: удалите существующий пакет, затем запустите установку php81 снова

2. php-fpm не включен и не запущен должным образом

Проверьте с помощью systemctl

$ systemctl list-unit-files | grep fpm
php81-php-fpm.service                         disabled
Войдите в полноэкранный режим Выйти из полноэкранного режима

Давайте включим и запустим его, а затем проверим его состояние

$ systemctl enable php81-php-fpm.service
$ systemctl start php81-php-fpm.service

$ systemctl status php81-php-fpm.service
● php81-php-fpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/usr/lib/systemd/system/php81-php-fpm.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2022-05-06 18:21:15 +08; 6min ago
 Main PID: 16011 (php-fpm)
   Status: "Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0req/sec"
    Tasks: 6
   Memory: 8.9M
   CGroup: /system.slice/php81-php-fpm.service
           ├─16011 php-fpm: master process (/etc/opt/remi/php81/php-fpm.conf)
           ├─15897 php-fpm: pool www
           ├─15898 php-fpm: pool www
           ├─15899 php-fpm: pool www
           ├─15900 php-fpm: pool www
           └─15901 php-fpm: pool www
Войти в полноэкранный режим Выход из полноэкранного режима

Еще одна замеченная проблема — php-fpm не читает конфигурацию php-fpm, которую мы установили в /etc/php-fpm.d. Из вывода команды systemctl status видно, что конфигурация читается по адресу /etc/opt/remi/php81/php-fpm.conf.

Отредактируйте этот файл, чтобы обновить каталог conf для чтения

;include=/etc/opt/remi/php81/php-fpm.d/*.conf
include=/etc/php-fpm.d/*.conf
Вход в полноэкранный режим Выйдите из полноэкранного режима

Теперь снова перезапустите службу php-fpm

$ systemctl restart php81-php-fpm.service 
$ systemctl status php81-php-fpm.service 
● php81-php-fpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/usr/lib/systemd/system/php81-php-fpm.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2022-05-06 18:30:07 +08; 32min ago
 Main PID: 16296 (php-fpm)
   Status: "Processes active: 0, idle: 21, Requests: 30, slow: 0, Traffic: 0req/sec"
    Tasks: 22
   Memory: 118.6M
   CGroup: /system.slice/php81-php-fpm.service
           ├─16296 php-fpm: master process (/etc/opt/remi/php81/php-fpm.conf)
           ├─16297 php-fpm: pool app.xxx.com
           ├─16298 php-fpm: pool app.xxx.com
Войдите в полноэкранный режим Выйдите из полноэкранного режима

Вместо пула www мы видим, что теперь он обслуживает пул для сайта app.xxx.com, который мы задали в конфигурации пула.

Вот и все!

Оцените статью
Procodings.ru
Добавить комментарий