# Как да проверите правилно PHP версията и състоянието на пача

> Проверка на PHP версията, но правилно: разпознайте състоянието на пача, backport-овете на дистрибуцията и работещите процеси и узнайте дали PHP2Shell е затворена.

Източник: https://phpsos.de/bg/php2shell/php-version-pruefen/  
Актуалност: 25.10.2026  
Доставчик: PHP SOS, Спешна помощ за PHP и сигурност на сървъри. Незабавна помощ по WhatsApp: https://wa.me/491736494914?text=%D0%97%D0%B4%D1%80%D0%B0%D0%B2%D0%B5%D0%B9%D1%82%D0%B5%2C%20PHP%20SOS%2C%20%D0%B8%D0%BC%D0%B0%D0%BC%D0%B5%20%D0%BD%D1%83%D0%B6%D0%B4%D0%B0%20%D0%BE%D1%82%20%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%20%D1%81%20%D0%BD%D0%B0%D1%88%D0%B8%D1%8F%20PHP%20%D1%81%D1%8A%D1%80%D0%B2%D1%8A%D1%80.%20%D0%A4%D0%B8%D1%80%D0%BC%D0%B0%3A%20%E2%80%A6%20%D0%A3%D0%B5%D0%B1%D1%81%D0%B0%D0%B9%D1%82%3A%20%E2%80%A6

**Накратко:** За да проверите PHP версията, `php -v` не стига. Трябва да знаете коя PHP версия действително ползва уеб сървърът, дали пакетът съдържа поправката, включително като backport със стар номер, и дали след актуализацията всички процеси са рестартирани. PHP2Shell е поправена в 8.5.12, 8.4.27, 8.3.36 и 8.2.35.

## Защо номерът на версията сам по себе си не стига

За PHP2Shell има ясен списък с поправени версии. На практика обаче три ситуации водят до погрешни оценки:

- **Няколко инсталации:** Командният ред показва PHP 8.3, а уебсайтът работи през пул с PHP 8.1.
- **Backport-ове:** Дистрибуциите и хостинг доставчиците понякога внасят поправки в съществуващи пакети. Тогава например Plesk продължава да показва 8.2.34, въпреки че е пачнато.
- **Стари процеси:** Новите файлове лежат на диска, но работещите worker процеси са от преди това.

За управителите и нетехническите хора помага просто правило: не питайте само „Каква PHP версия имаме?“, а „PHP2Shell затворена ли е на всички сървъри и по какво го виждаме?“. Надеждният отговор съдържа три доказателства: версия или backport, състояние на пакета и момент на рестартирането.

Затова техническата проверка има три стъпки: версия, състояние на пакета, работещи процеси. Командите по-долу са само за четене. Имената на пакетите и услугите се различават според дистрибуцията, източника на PHP и интерфейса на хостинга; примерите изхождат от PHP 8.3.

## Проверка на PHP версията в командния ред

```bash
php -v                                  # версия от командния ред
ls /etc/php/ 2>/dev/null                # Debian/Ubuntu: инсталирани клонове
php-fpm8.3 -v                           # версия на двоичния файл на FPM (името зависи от дистрибуцията)
php -i | grep -E "^PHP Version|Server API|Loaded Configuration File"
```

При RHEL, AlmaLinux или Rocky двоичният файл на FPM обикновено се казва `php-fpm`; при Software Collections или външни източници допълнителни версии лежат в собствени пътища. Plesk и cPanel носят собствени PHP инсталации, които съществуват до системния PHP. Как да действате там, описваме на страниците за [Plesk](https://phpsos.de/bg/server/plesk/) и cPanel.

Коя PHP версия ползва един уебсайт в уеб контекст, най-надеждно се вижда в конфигурацията на пула или на VirtualHost или в интерфейса на хостинга. Страница с phpinfo също го показва; създавайте я само за кратко, със защита на достъпа и случайно име, и я изтрийте веднага след това.

При споделен хостинг обикновено нямате достъп до командния ред. Тогава интерфейсът на хостинга показва зададената PHP версия за всеки уебсайт. Дали е внесен backport и е направено рестартиране, там рядко пише. Тук надеждният път е писменото потвърждение от хостинг доставчика.

## Проверка на състоянието на пакета и на backport-овете

Състоянието на пакета показва какво действително е доставила Вашата дистрибуция:

```bash
# Debian/Ubuntu
apt policy php8.3-fpm
apt changelog php8.3-fpm | grep -i -E "CVE-2026-109618|CVE-2026-109619"

# RHEL, AlmaLinux, Rocky, Fedora
dnf info php-fpm
rpm -q --changelog php-fpm | grep -i -E "CVE-2026-109618|CVE-2026-109619"
```

Ако един от номерата CVE е в changelog-а, backport-ът се съдържа в инсталирания пакет. Ако записът липсва, това още не е доказателство за уязвимост: някои поддържащи пакетите формулират changelog-овете по друг начин. Тогава сравнете версията на пакета със съобщенията за сигурност на Вашата дистрибуция или попитайте доставчика. Образец за това запитване ще намерите на страницата [Как да попитате хостинг доставчика за състоянието на пача](https://phpsos.de/bg/ratgeber/hoster-patch-status-erfragen/).

Важно: проверете всеки инсталиран PHP пакет, не само първия. На сървъри с няколко клона често единият е пачнат, а друг не.

## Работи ли новата версия наистина?

Една актуализация е в сила едва когато всички PHP процеси са рестартирани. Сравнете времето на стартиране на работещите процеси с момента на актуализацията:

```bash
ps -o pid,lstart,cmd -C php-fpm8.3      # време на стартиране на FPM процесите
systemctl status php8.3-fpm             # от кога работи услугата
needrestart -r l                        # Debian/Ubuntu, ако е инсталиран: показва остарели процеси
```

Ако времето на стартиране е преди актуализацията, още работят стари процеси. При Apache с mod_php същото важи за процесите на Apache. Как да рестартирате чисто, описва страницата [Рестартиране на PHP-FPM и на всички worker процеси](https://phpsos.de/bg/php2shell/php-fpm-neustart/).

> **Съвет:**
> Запишете резултата писмено: сървър, PHP версия, версия на пакета, CVE в changelog-а да или не, момент на рестартирането. Тази бележка Ви трябва за управителите, застрахователя и по-късната проверка за следи.

## Оценка на резултата

| Находка | Оценка |
|---|---|
| Официална версия 8.5.12, 8.4.27, 8.3.36 или 8.2.35, процесите рестартирани | PHP2Shell затворена |
| По-стар номер, номерата CVE в changelog-а на пакета, процесите рестартирани | Внесен backport, затворена |
| По-стар номер, няма запис в changelog-а, няма потвърждение | неясно, изяснете при доставчика |
| PHP 8.1 или по-стар без потвърден backport | отворена, нужни са временни мерки и миграция |
| Процесите са по-стари от актуализацията | Липсва рестартиране, уязвимостта продължава да е активна |

Ако един сървър остане в състояние „неясно“, третирайте го като отворен: задайте временни мерки и следете изясняването, докато има доказателство. Пълният преглед на версиите е на страницата [Кои PHP версии са засегнати?](https://phpsos.de/bg/php2shell/betroffene-php-versionen/).

## Как помага PHP SOS конкретно?

С [услугата за пач на PHP](https://phpsos.de/bg/leistungen/php-patch-service/) поемаме проверката и доказателството:

- **Намиране на всички инсталации,** също и на второстепенните версии от хостинг панели, Software Collections или контейнери.
- **Оценка на състоянието на пакета:** официално издание, backport или отворена, с доказателство от changelog-а или от доставчика.
- **Контрол на рестартирането,** докато не работи нито един процес със стар код.
- **Изготвяне на протокол от проверката,** който можете да ползвате вътрешно и пред трети лица.


## Често задавани въпроси

**Защо php -v показва друга версия от тази на уебсайта ми?**  
На много сървъри са инсталирани няколко PHP версии. Командният ред използва една от тях, уеб сървърът или един FPM пул друга. Затова проверете версията, която действително работи в уеб контекст, например чрез двоичния файл на FPM или интерфейса на хостинга.

**Как разпознавам backport?**  
При пакети от дистрибуции поправката често е в changelog-а на пакета, често с номера CVE. При Debian и Ubuntu помага apt changelog, при RHEL-подобни системи rpm -q --changelog. Ако записът липсва, изяснете състоянието при доставчика.

**Мога ли да проверя PHP версията в клиентското меню на хостинга?**  
Да, повечето интерфейси показват зададената версия за всеки уебсайт. Дали е внесен backport и е направено рестартиране, там обикновено не се вижда. За това надеждният път е писмено потвърждение от хостинг доставчика.

## Източници

- [php.net: Съобщения за сигурност](https://www.php.net/)
- [PHP 8 ChangeLog](https://www.php.net/ChangeLog-8.php)
- [php.net: Поддържани версии](https://www.php.net/supported-versions.php)
