1. Скрипт на старой машине (RHEL 8)
export-php-packages.sh:
#!/usr/bin/env bash
set -e
OUT_FILE="php-packages.txt"
echo "Собираю список установленных PHP-пакетов в $OUT_FILE"
# Вариант через dnf (предпочтителен на RHEL8)
dnf list installed | awk '/php/ {print $1}' | sort -u > "$OUT_FILE"
# Если dnf вдруг недоступен, можно так (раскомментировать при необходимости):
# rpm -qa 'php*' | sort -u > "$OUT_FILE"
echo "Готово. Скопируйте $OUT_FILE на новую машину."
dnf list installed | grep php/awk '/php/ {print $1}' — стандартный способ увидеть все установленные пакеты, содержащие php в имени на RHEL 8. [linuxconfig](https://linuxconfig.org/how-to-list-installed-packages-on-redhat-8)
2. Скрипт на новой машине (RHEL 8)
install-php-packages.sh:
#!/usr/bin/env bash
set -e
IN_FILE="php-packages.txt"
if [ ! -f "$IN_FILE" ]; then
echo "Файл $IN_FILE не найден"
exit 1
fi
sudo dnf makecache
# Устанавливаем те же пакеты, пропуская отсутствующие
xargs -a "$IN_FILE" -r sudo dnf install -y
dnf install в RHEL 8 является основным пакетным менеджером, и через xargs можно массово ставить пакеты из файла. [linode](https://www.linode.com/docs/guides/dnf-package-manager/)
3. Контроль модулей PHP
На обеих машинах можно сохранить список реально загруженных модулей PHP:
php -m | sort > php-modules.txt
Списки php-modules.txt удобно сравнить diff/vimdiff, чтобы убедиться, что окружения совпадают. [stackoverflow](https://stackoverflow.com/questions/14774700/how-to-find-the-version-numbers-of-built-in-modules-in-php-from-the-cli)
[file-name 000325_2026-01-16_17-52-42.txt]