Накратко: На сървъри с CloudLinux уебсайтовете често не работят със стандартния PHP, а с alt-php - собствени пакети за всяка версия на PHP, които клиентите избират през PHP Selector. Срещу PHP2Shell операторът на сървъра трябва да актуализира всяка инсталирана версия alt-php поотделно и да рестартира всички PHP процеси. Като хостинг клиент изяснете коя версия ползва Вашият акаунт и поискайте писмено потвърждение за състоянието на нейния пач.
Защо CloudLinux е отделен въпрос при PHP2Shell
Много доставчици на споделен хостинг ползват CloudLinux - Linux операционна система, която разделя хиляди клиентски акаунти на един сървър един от друг. За операторите на уебсайтове това обикновено е невидимо. Вижда се едва когато се появи уязвимост в самия PHP интерпретатор, както при PHP2Shell с CVE-2026-109618 и CVE-2026-109619.
Причината: на такива сървъри често има няколко източника на PHP един до друг. Освен PHP на операционната система и, при cPanel, пакетите ea-php, стоят и пакетите alt-php на CloudLinux. Всеки източник има собствено състояние на пакета. Че един от тях е пачнат, не казва нищо за останалите.
За агенции и фирми с няколко акаунта при един и същ хостер се добавя втора точка: всеки уебсайт може да ползва друга версия, защото някой я е сменил преди години в клиентската зона. Единственото запитване за „PHP“ на хостера затова е недостатъчно. Смислен е списък на всички домейни с избраната във всеки случай версия.
Какво са alt-php и PHP Selector
Според документацията на CloudLinux PHP Selector предоставя алтернативни версии на PHP, пакетите alt-php. Те стоят в /opt/alt/phpXX/, например /opt/alt/php83/ за PHP 8.3, всяка със собствен php.ini. Документацията изброява версии от 5.1 до 8.5, в зависимост от версията на CloudLinux на сървъра.
Клиентите избират версията си сами, в cPanel обикновено през „Select PHP Version“. Технически това предполага CageFS - вид обособена файлова система за всеки акаунт. Според документацията Selector работи със suPHP, mod_fcgid, CGI и LiteSpeed; Apache с mod_php CageFS не поддържа.
| Понятие | Значение за Вас |
|---|---|
| CloudLinux | Операционна система на хостера, разделя клиентските акаунти |
| CageFS | собствена, обособена файлова система за всеки акаунт |
| alt-php | PHP пакети на CloudLinux, по един за всяка версия |
| PHP Selector | Избор на версията alt-php и на отделни опции в клиентската зона |
CloudLinux alt-php и PHP2Shell: какво е доказано и какво остава открито
Доказано е: отстранените версии на PHP са 8.5.12, 8.4.27, 8.3.36 и 8.2.35. За PHP 8.1 и по-стари проектът PHP вече не издава официални актуализации, а само минимални backport-ове на изходния код за 7.4, 8.0 и 8.1. Според специализираната преса са засегнати почти всички версии до PHP 5.4.
Открито остава в наличните ни източници за кои версии alt-php CloudLinux вече доставя пачнати пакети. Особено при стари клонове като 5.6 или 7.4, които Selector продължава да предлага, затова има значение единствено изявлението на доставчика. Backport-овете могат да са инсталирани, без показваният номер на версията да се променя.
Особеност засяга cPanel сървърите с комерсиална дългосрочна поддръжка: според документацията на cPanel TuxCare, марка на CloudLinux, доставя пачнати пакети за изтекли версии на PHP като alt-php. Който там е превключен от ea-php74 на alt-php74, зависи от този път. Повече по темата има в статията Дългосрочна поддръжка за стари версии на PHP.
Тези въпроси трябва да зададете на хостера си още сега
Като клиент не можете сами да пачвате alt-php. Можете обаче да зададете правилните въпроси и да документирате отговорите. Готов образец предлага ръководството Попитайте хостера за състоянието на пача.
- Акаунтът ми работи ли с alt-php, ea-php или с PHP на операционната система, и с коя точно версия?
- Пачнат ли е точно този пакет срещу CVE-2026-109618 и CVE-2026-109619, и от кога?
- Рестартирани ли са след това всички PHP процеси, включително процесите lsphp и php-cgi?
- Зададени ли са централно преходните стойности от php.net, особено
session.upload_progress.enabled=0? - Кои версии на alt-php вече не се пачват и до кога трябва да премина на друга?
Проверете паралелно коя версия акаунтът Ви наистина ползва. Ако имате SSH достъп, php -v показва версията на командния ред, която обаче може да се различава от тази на уебсайта. По-надеждно е показването в PHP Selector за засегнатия домейн.
Ако хостерът отговори, че избраната от Вас версия вече не се пачва, чистият път е преминаване към поддържан клон. Преди това проверете в системните изисквания на Вашата CMS или магазин кои версии на PHP производителят разрешава и по възможност тествайте превключването върху копие на уебсайта. Превключването в Selector става бързо, грешка в магазина в понеделник сутрин - не.
PHP опции в Selector: внимание към преходните стойности
PHP Selector позволява на клиентите сами да променят отделни стойности на php.ini, сред тях често memory_limit. Кои стойности са разрешени, според документацията определя операторът във файла /etc/cl.selector/php.conf. Глобалните стойности за всички версии alt-php стоят в /etc/cl.selector/global_php.ini.
Това е важно за PHP2Shell. php.net препоръчва като преход memory_limit=-1 да се задава така, че приложенията да не могат да презапишат стойността, а session.upload_progress.enabled=0 да не се задава чрез ini_set() или .user.ini. Стойност, която всеки акаунт може свободно да променя, не отговаря на това условие. Контекста има в Незабавни мерки без пач.
За операторите на сървъри оттук следва кратък контролен списък. Командите само четат:
# Кои версии на PHP предлага Selector, коя е стандартната?
selectorctl --summary
# Инсталирани пакети alt-php и тяхното състояние
rpm -qa 'alt-php*' | sort
# Стоят ли CVE номерата в changelog на пакета? (името на пакета е пример)
rpm -q --changelog alt-php83 | grep -E "CVE-2026-10961[89]"
# Работещи PHP процеси с време на стартиране, за доказване на рестарта
ps -eo pid,lstart,cmd | grep -E '[l]sphp|[p]hp-cgi|[p]hp-fpm'
Според документацията на CloudLinux актуализацията се прави с yum groupupdate alt-php. След това всички PHP процеси трябва да се рестартират, иначе старият код продължава да работи в паметта. Преходните стойности, които не бива да се презаписват, принадлежат към глобалната конфигурация, а не към списъка с клиентски опции. Как ea-php и alt-php се отнасят един към друг на cPanel сървъри, описва cPanel и WHM: защита на PHP.
Пачът не премахва злонамерен софтуер, вмъкнат преди това. Ако акаунтът Ви е работил между 17 и 21 октомври с уязвима версия, си заслужава поглед върху нови PHP файлове и логовете за достъп от 20 октомври насам.
Как помага PHP SOS конкретно?
- Изясняване на състоянието: Установяваме с кой източник на PHP и коя версия работи всеки от Вашите уебсайтове и формулираме запитването до хостера.
- Оценка на отговора: Проверяваме потвърждението на хостера за празнини, например липсващи данни за рестарта или за стари клонове alt-php.
- Съпровождане на смяната: Ако уебсайт работи на версия без пач, планираме преминаването и го тестваме предварително.
- За оператори: Чрез PHP Patch Service актуализираме пакети alt-php, ea-php и системни пакети, рестартираме всички процеси и документираме състоянието.
Често задавани въпроси
Как да разбера дали моят хостер ползва CloudLinux и alt-php?
Типичен признак е функцията „Select PHP Version“ в клиентската зона на cPanel, чрез която сами можете да превключвате между много версии на PHP. С увереност го знаете едва когато хостерът го потвърди.
Мога ли сам да актуализирам alt-php в моя акаунт?
Не. Пакетите alt-php стоят централно на сървъра и се поддържат от оператора. Можете само да избирате между инсталираните версии и трябва да поискате потвърждение за състоянието на пача на избраната версия.
Защитена ли е стара версия на alt-php като 7.4 срещу PHP2Shell?
Без изявление на доставчика това не може да се каже. Според специализираната преса са засегнати почти всички версии до PHP 5.4, а проектът PHP не издава официални актуализации за 8.1 и по-стари. Дали е инсталиран backport, хостерът трябва да потвърди писмено за точно Вашата версия.
Мога ли сам да променям memory_limit в PHP Selector?
Технически често да, ако операторът е разрешил настройката. php.net обаче препоръчва като преходна мярка memory_limit да се зададе така, че приложенията да не могат да презапишат стойността. Затова променяйте такива стойности само след съгласуване с хостера.