• Обновление PHP

 #10898   IgorA100
 Сегодня, 00:08
В первую очередь нам нужно проверить, какие модули установлены:
Причём лучше использовать именно список установленных пакетов dpkg, а не php -m: последний показывает загруженные расширения, но не все установленные пакеты
Код: Выделить всёdpkg -l | awk '/^ii/ && $2 ~ /^php8\.1-/ {print $2}'


Теперь надо выполнить:
Код: Выделить всёdpkg -l | awk '/^ii/ && $2 ~ /^php8\.1-/ {sub(/^php8\.1-/, "php8.2-", $2); print $2}' | xargs -o sudo apt install --simulate

Используем xargs -o Ключ -o (--open-tty) заставляет xargs открыть для дочерней команды настоящий терминал, где можно подтвердить установку (нажать Y) или отменить установку.
Если ошибок нет, все пакеты найдены, то выполнить предыдущую команду без ключа " --simulate"
Эта команда:
- найдёт все установленные пакеты php8.1-*;
- заменит префикс на php8.2-*;
- передаст полученный список в apt install.

Еще как вариант, можно так сформировать список пакетов:
Код: Выделить всёdpkg -l | awk '/^ii/ && $2 ~ /^php8\.1-/ {sub(/^php8\.1-/, "php8.2-", $2); print $2}' > /tmp/php82-packages.txt
cat /tmp/php82-packages.txt


Затем проверить установку без внесения изменений:
Код: Выделить всёxargs -a /tmp/php82-packages.txt sudo apt install --simulate


Если всё нормально, выполнить:
Код: Выделить всёxargs -a /tmp/php82-packages.txt sudo apt install -y


После установки необходимо проверить установленные модули:
Код: Выделить всёphp8.2 -m

И список пакетов:
Код: Выделить всёdpkg -l | grep php8.2
 #10899   IgorA100
 Сегодня, 00:45
После обновления остановить старую версию:
Код: Выделить всёsystemctl stop php8.1-fpm
systemctl disable php8.1-fpm


И запустить новую версию:
Код: Выделить всёsystemctl start php8.4-fpm
systemctl enable php8.4-fpm


Посмотреть какую версию PHP использует сокет:
Код: Выделить всёss -xlpn | grep zabbix.sock


Удаляем старые версии:
Код: Выделить всёapt purge 'php8.1-*'
apt autoremove --purge
 #10900   IgorA100
 Сегодня, 00:58
Посмотреть какие версии PHP запущены и какие сокеты они слушают:
Код: Выделить всёecho "=== PHP-FPM processes ==="
pgrep -a -f 'php-fpm: master process'

echo
echo "=== PHP-FPM services ==="
systemctl list-units --type=service --state=running 'php*-fpm.service'

echo
echo "=== Listening PHP-FPM sockets ==="
ss -xlpn | grep php-fpm


Чтобы определить, какой именно пул его создаёт, посмотри конфигурации:
Код: Выделить всёgrep -R -nE '^\s*(\[|listen\s*=)' /etc/php/8.4/fpm/pool.d/