<===
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"
Back to list