Накратко: Стари версии на PHP най-безопасно деактивирате на три фази: установете използването, блокирайте версията и наблюдавайте, едва тогава деинсталирайте. В Plesk handler първо може да се деактивира, така че вече да не може да бъде избиран, а по-късно да се премахне от Updates and Components. Всяка премахната версия е една по-малко, която трябва да пачвате и рестартирате при следващата уязвимост като PHP2Shell.
Защо да се почисти точно сега?
Седмицата след PHP2Shell показа на много администратори колко версии на PHP са инсталирани на сървърите им. Всяка от тях трябваше да бъде проверена, всяка изискваше актуализация или преходни мерки, всяка услуга - рестарт. За PHP 8.1 и по-стари има само минимални backport-ове на изходния код, а за PHP 8.2 поддръжката приключва на 31.12.2026 г.
С този опит още пресен в паметта, моментът е подходящ за почистване. Как изобщо да намерите всички инсталации, описва статията Няколко версии на PHP на един сървър. Тук става дума за следващата стъпка: контролираното изключване.
Фаза 1: Установяване на използването
Преди да изключите нещо, трябва да знаете кой ползва дадена версия. Уебсайтовете са очевидната част. По-малко видими са поддомейните, тестовите инсталации, cron задачите, скриптовете и компонентите на панела.
В Plesk командата plesk bin php_handler --list изброява всички регистрирани handler-и. С --get-usage Plesk според документацията показва кои домейни ползват определен handler. И двете команди не променят нищо.
# Plesk: всички handler-и и домейните, които ползват даден handler
plesk bin php_handler --list
plesk bin php_handler --get-usage -id <handler-id>
# Общо: cron задачи, които извикват определена версия на PHP
grep -rE "php(7|8\.0|8\.1)" /etc/crontab /etc/cron.d /var/spool/cron 2>/dev/null
Проверете допълнително логовете за достъп на засегнатите уебсайтове: тестова инсталация, която от месеци не е получавала заявка, е кандидат за премахване, не за миграция. Отбележете за всяка стара версия кой я ползва и защо.
Попитайте и хората, които работят с уебсайтовете. Редакции, агенции и специализирани отдели често познават процеси, които не стоят в никой списък: годишния експорт за счетоводството, формуляра за изложение, интерфейса към системата за управление на стоките. Което там зависи от стара версия, иначе се забелязва едва когато липсва.
Фаза 2: Блокиране и наблюдение
Междинната стъпка предотвратява повторното присвояване на версията, без тя да бъде изтрита веднага. В Plesk има възможност отделни handler-и да се деактивират. Според документацията на Plesk деактивиран handler вече не може да бъде избиран в PHP настройките на уебсайт; версията остава инсталирана. От командния ред това става с plesk bin php_handler --disable -id <handler-id>.
Домейните, които още ползват старата версия, предварително превключете в съгласие с отговорните на поддържана версия. Как изглежда това от гледна точка на оператора на уебсайта, описва статията Смяна на версията на PHP в клиентската зона на хостинга. Избора на подходящия handler обяснява статията Plesk: разбиране на PHP handler-ите.
По време на наблюдението следете за съобщения за грешки в логовете, липсващи резултати от cron задачи и обратна връзка от потребителите. В други панели функциите се наричат различно; проверете там документацията на производителя.
Определете края на периода на наблюдение като срок и назовете кой след това одобрява деинсталирането. Иначе междинната стъпка става постоянно състояние и старата версия все пак остава на сървъра.
Фаза 3: Деинсталиране
Едва когато периодът на наблюдение мине без забележки, премахнете версията изцяло. В Plesk това според документацията става в Tools & Settings, Updates, Add/Remove Components, в раздел Web hosting при версиите на PHP интерпретатора. Инсталираните версии са отбелязани там и могат да се изберат за премахване.
На сървъри без панел тази задача поема управлението на пакетите. Преди това запазете конфигурацията на версията, например /etc/php/7.4/ при Debian и Ubuntu, за да можете при нужда да проследите кои настройки са важали.
# Запазване на конфигурацията, после премахване на пакетите на един клон (пример Debian/Ubuntu, PHP 7.4)
tar czf /root/php74-konfiguration.tar.gz /etc/php/7.4/
apt remove 'php7.4*'
След премахването си заслужава контрол. В Plesk документацията препоръчва plesk bin php_handler --reread, за да се прочетат наново данните за handler-ите след промени в PHP бинарните файлове. Проверете освен това дали сервизните планове още сочат към премахнатата версия.
Типични спънки
| Спънка | Как я разпознавате | Какво помага |
|---|---|---|
| Компонент на панела зависи от версията | Панелът съобщава зависимост при премахването | Първо превключете компонента или запазете версията |
| Сервизен план сочи към стара версия | Новите уебсайтове получават старата версия или съобщение за грешка | Коригирайте плана, после премахнете версията |
| Cron задача извиква фиксиран път | Скриптът се проваля след премахването | Сменете пътя към поддържана версия |
| Приложението не работи на новата версия | Грешка след превключването в лога за грешки | Актуализирайте или мигрирайте приложението |
Ако приложение не може да бъде повдигнато до поддържана версия, изключването на старата версия вече не е въпрос на конфигурация, а проект за миграция. Рисковете на остарелите клонове описва ръководството PHP End-of-Life: рискове от остарели версии.
Следващият кандидат вече е известен
Почистването не е еднократно действие. Още на 31.12.2026 г. PHP 8.2 отпада от поддръжката на проекта PHP. Който премахва сега версиите до 8.1, трябва в същия ход да определи как продължава с 8.2. Иначе след няколко седмици същата игра започва отначало.
Доказало се е просто правило за сървъра: предлагат се само клонове, които проектът PHP поддържа. При настройването всеки клон получава дата, на която се проверява отново, с ориентир края на поддръжката на php.net. Контекста на този цикъл обяснява страницата Версии на PHP и цикъл на издаване.
Който като хостер или агенция има клиенти на сървъра, трябва да ги информира рано. Обявление с дата, молба за превключване и предложение за съдействие предотвратяват отпадането на уебсайтове в крайния ден. Клиентите, чието приложение не се справя, така разпознават навреме, че предстои актуализация или миграция, и могат да планират за това.
Как помага PHP SOS конкретно?
- Установяваме кои уебсайтове, cron задачи и компоненти на панела коя версия на PHP ползват.
- Превключваме домейните в съгласие с Вас на поддържани версии и блокираме старите handler-и.
- След периода на наблюдение премахваме старите версии контролирано и проверяваме резултата.
- Където приложенията не издържат, планираме миграцията от PHP 8.1 и по-стари.
Често задавани въпроси
Защо да премахвам неизползваните версии на PHP?
Всяка инсталирана версия трябва при всяка уязвимост да бъде проверена, актуализирана и рестартирана. Стари клонове като PHP 8.1 и по-стари вече не получават актуализации от проекта PHP. Неизползваните версии носят само риск и усилия.
Каква е разликата между деактивиране и деинсталиране?
При деактивиране версията остава инсталирана, но не може повече да бъде избирана наново. При деинсталиране тя се премахва от сървъра. Деактивирането е безопасната междинна стъпка, за да се види дали нещо липсва.
Може ли премахването на версия на PHP да наруши функции на панела?
Да. Някои компоненти на панела, например уебпоща или инструменти за управление, зависят от определена версия на PHP. Изяснете такива зависимости преди премахването; панелът по правило ги сочи.
Колко дълго трябва да трае периодът на наблюдение?
Достатъчно дълго, за да са се изпълнили поне веднъж всички редовни процеси, включително месечните cron задачи и експорти. Определете срока заедно със специализираните отдели.