<===

ProNotes

2026-04-30 18:11:30
одновременно видны **два PHP-FPM сервиса**, значит в системе, скорее всего, стоят две ветки PHP — системная `php-fpm` и реми-пакет `php80-php-fpm`. [unihost](https://unihost.com/help/ru/how-to-install-php-8-on-centos-rhel-server/)

## Что это обычно значит

`php-fpm` — это стандартный сервис из обычных пакетов PHP, а `php80-php-fpm` обычно приходит из Remi и обслуживает именно PHP 8.0 отдельно от системной версии. [access.redhat](https://access.redhat.com/solutions/6985583)
Если цель — перейти полностью на PHP 8.0, то надо оставить только одну ветку и убрать конфликтующие пакеты/сервис старой версии. [dev-notes](https://www.dev-notes.ru/articles/devops/php-8.3-install-upgrade-on-fedora-rhel-el/)

## Что проверить сначала

```bash
rpm -qa | egrep '^(php|php80-php)'
systemctl status php-fpm php80-php-fpm
dnf module list php
```

Если `httpd` сейчас подключён к `php80-php-fpm`, то это уже близко к нужной схеме; если к `php-fpm`, то Apache может использовать старую ветку. [8host](https://www.8host.com/blog/zapusk-neskolkix-versij-php-na-odnom-servere-s-pomoshhyu-apache-i-php-fpm-v-centos-8/)

## Как обычно чистят старую версию

Если вы хотите убрать текущий PHP и оставить только PHP 8.0 из Remi, логика такая:

```bash
sudo dnf remove 'php*'
sudo dnf module reset php
sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm
sudo dnf module enable -y php:remi-8.0
sudo dnf install -y php80-php-fpm php80-php-cli php80-php-common php80-php-mysqlnd php80-php-opcache php80-php-xml php80-php-gd php80-php-mbstring
```

Для Remi при обновлении рекомендуют удалять старые `phpXX-php.conf` из `/etc/httpd/conf.d`, чтобы Apache не цеплял старую конфигурацию. [unihost](https://unihost.com/help/ru/how-to-install-php-8-on-centos-rhel-server/)

## Что делать с сервисами

После установки PHP 8.0 обычно включают именно его сервис:

```bash
sudo systemctl disable --now php-fpm
sudo systemctl enable --now php80-php-fpm
sudo systemctl restart httpd
```

Если `httpd` уже настроен на сокет Remi, то путь обычно выглядит как `/var/opt/remi/php80/run/php-fpm/www.sock`. [8host](https://www.8host.com/blog/zapusk-neskolkix-versij-php-na-odnom-servere-s-pomoshhyu-apache-i-php-fpm-v-centos-8/)
Проверить можно по конфигам Apache:

```bash
grep -R "php-fpm\|SetHandler\|proxy:unix" /etc/httpd/conf /etc/httpd/conf.d
```

## Если хотите оставить оба

Так тоже можно: старый `php-fpm` отключить, а `php80-php-fpm` оставить для сайта на PHP 8.0. В этом случае важно, чтобы `httpd` был привязан именно к сокету `php80-php-fpm`, а не к системному FPM. [access.redhat](https://access.redhat.com/solutions/6985583)

## Практический вывод

Для вашей ситуации правильнее всего:
- удалить старую ветку `php*` из обычных репозиториев,
- оставить `php80-php-fpm`,
- проверить `httpd`-конфиг на `SetHandler` с сокетом Remi,
- отключить лишний `php-fpm`. [unihost](https://unihost.com/help/ru/how-to-install-php-8-on-centos-rhel-server/)

===============================
Да — тогда делаем **чистый переход на `php80-php-fpm`** и убираем старый `php-fpm`. [access.redhat](https://access.redhat.com/solutions/6985583)

## Порядок действий

1. Посмотреть, какие PHP-пакеты стоят:
```bash
rpm -qa | egrep '^(php|php80-php)'
systemctl status php-fpm php80-php-fpm
```

2. Остановить старый сервис:
```bash
sudo systemctl disable --now php-fpm
```

3. Удалить старые системные PHP-пакеты:
```bash
sudo dnf remove -y 'php*'
```

4. Сбросить модуль PHP:
```bash
sudo dnf module reset -y php
```

5. Поставить Remi и PHP 8.0:
```bash
sudo dnf install -y epel-release
sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm
sudo dnf module enable -y php:remi-8.0
sudo dnf install -y php80-php-fpm php80-php-cli php80-php-common php80-php-mysqlnd php80-php-opcache php80-php-xml php80-php-gd php80-php-mbstring php80-php-json
```

6. Включить новый FPM:
```bash
sudo systemctl enable --now php80-php-fpm
```

## Настройка Apache

7. Найти и убрать старую Apache-конфигурацию PHP:
```bash
sudo grep -R "php-fpm\|SetHandler\|proxy:unix" /etc/httpd/conf /etc/httpd/conf.d
```

8. Если есть старый файл типа `php.conf` или `15-php.conf`, отключить его:
```bash
sudo mv /etc/httpd/conf.d/php.conf /etc/httpd/conf.d/php.conf.off 2>/dev/null || true
sudo mv /etc/httpd/conf.d/15-php.conf /etc/httpd/conf.d/15-php.conf.off 2>/dev/null || true
```

9. Создать конфиг Apache для `php80-php-fpm`:
```bash
sudo tee /etc/httpd/conf.d/php80-fpm.conf >/dev/null <<'EOF'
<IfModule proxy_fcgi_module>
    <FilesMatch \.php$>
        SetHandler "proxy:unix:/var/opt/remi/php80/run/php-fpm/www.sock|fcgi://localhost"
    </FilesMatch>
</IfModule>
EOF
```

10. Перезапустить Apache:
```bash
sudo apachectl configtest
sudo systemctl restart httpd
```

## Проверка

11. Проверить, что работает именно PHP 8.0:
```bash
php -v
systemctl status php80-php-fpm
```

12. Проверить сайт:
```bash
echo '<?php phpinfo(); ?>' | sudo tee /var/www/html/info.php
```

Открываете `http://server/info.php` и смотрите версию PHP. [zend](https://www.zend.com/blog/apache-phpfpm-modphp)

## Если нужно убрать старую ветку полностью

Если после удаления у вас всё ещё виден `php-fpm`, проверьте:
```bash
rpm -qa | egrep '^(php|php80-php)'
systemctl list-unit-files | grep php
```

И если пакет старой ветки остался, удалите его точечно:
```bash
sudo dnf remove -y php-fpm php-cli php-common php-mysqlnd php-opcache php-xml php-gd php-mbstring php-json
```

Ваша текущая цель — оставить только `php80-php-fpm`, и для Apache использовать сокет Remi `/var/opt/remi/php80/run/php-fpm/www.sock`. [access.redhat](https://access.redhat.com/solutions/6985583)

==============================
#!/usr/bin/env bash
set -euo pipefail

echo "[1/8] Проверка ОС"
if ! rpm -q redhat-release >/dev/null 2>&1; then
  echo "Это не RHEL-подобная система. Прерывание."
  exit 1
fi

echo "[2/8] Отключаем старый php-fpm, если есть"
systemctl disable --now php-fpm 2>/dev/null || true

echo "[3/8] Удаляем старые системные PHP-пакеты"
dnf remove -y php\* || true

echo "[4/8] Подключаем репозитории Remi"
dnf install -y epel-release
dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm

echo "[5/8] Сбрасываем модуль PHP и включаем Remi PHP 8.0"
dnf module reset -y php
dnf module enable -y php:remi-8.0

echo "[6/8] Устанавливаем PHP 8.0 из Remi"
dnf install -y \
  php80-php-fpm \
  php80-php-cli \
  php80-php-common \
  php80-php-mysqlnd \
  php80-php-opcache \
  php80-php-xml \
  php80-php-gd \
  php80-php-mbstring \
  php80-php-json

echo "[7/8] Отключаем старые конфиги Apache для PHP, если были"
mv /etc/httpd/conf.d/php.conf /etc/httpd/conf.d/php.conf.off 2>/dev/null || true
mv /etc/httpd/conf.d/15-php.conf /etc/httpd/conf.d/15-php.conf.off 2>/dev/null || true
rm -f /etc/httpd/conf.d/php80-fpm.conf

cat >/etc/httpd/conf.d/php80-fpm.conf <<'EOF'
<IfModule proxy_fcgi_module>
    <FilesMatch \.php$>
        SetHandler "proxy:unix:/var/opt/remi/php80/run/php-fpm/www.sock|fcgi://localhost"
    </FilesMatch>

    DirectoryIndex index.php index.html
</IfModule>
EOF

echo "[8/8] Включаем php80-php-fpm и перезапускаем httpd"
systemctl enable --now php80-php-fpm
apachectl configtest
systemctl restart httpd

echo
echo "=== ГОТОВО ==="
echo "Проверка версий:"
php80 -v || true
systemctl --no-pager --full status php80-php-fpm | sed -n '1,12p' || true
echo
echo "Проверка сокета:"
ls -l /var/opt/remi/php80/run/php-fpm/www.sock || true
echo
echo "Тестовый файл:"
cat >/var/www/html/info.php <<'EOF'
<?php phpinfo();
EOF
echo "/var/www/html/info.php создан"
echo "Откройте в браузере: http://<server>/info.php"  
← Previous
Back to list