<===
2026-01-16 17:52:42
Для RHEL 8 логика та же, только вместо `dpkg/apt` используем `dnf`/`rpm`. [linuxconfig](https://linuxconfig.org/how-to-list-installed-packages-on-redhat-8)
## 1. Скрипт на старой машине (RHEL 8)
`export-php-packages.sh`:
```bash
#!/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`:
```bash
#!/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:
```bash
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)