Krótko: Aktualizacja PHP w cPanel po PHP2Shell obejmuje trzy kroki: doprowadzić wszystkie pakiety ea-php i ewentualnie alt-php do stanu z usuniętą luką, w pełni zrestartować PHP-FPM i Apache oraz udokumentować stan pakietów. Klienci na serwerze nie mogą sami ustawić najważniejszych wartości przejściowych, musi to zrobić administrator WHM.
Punkt wyjścia na serwerach cPanel
PHP2Shell obejmuje luki CVE-2026-109618 i CVE-2026-109619 w samym PHP. Obie umożliwiają wykonanie szkodliwego kodu bez logowania i są oceniane na 9.2 w skali CVSS v4.0. Dotyczą PHP-FPM, Apache z mod_php, php-cgi, FrankenPHP i LiteSpeed. Projekt PHP opublikował 21.10.2026 wersje 8.5.12, 8.4.27, 8.3.36 i 8.2.35.
cPanel dostarcza PHP nie jako pojedynczy pakiet, lecz przez EasyApache 4, z osobnym zestawem pakietów dla każdej wersji, na przykład ea-php83 lub ea-php84. Na części serwerów dochodzą pakiety systemu operacyjnego, a w CloudLinux wersje alt-php. Każde źródło ma własny stan. Pełny obraz powstaje dopiero po sprawdzeniu wszystkich trzech.
Aktualizacja PHP w cPanel: kontrola zasobów i przypisań
Proszę zacząć od inwentaryzacji. Poniższe polecenia tylko odczytują i niczego nie zmieniają. Ścieżki i nazwy pakietów to przykłady i mogą się różnić zależnie od instalacji.
# Zainstalowane wersje PHP według API WHM
whmapi1 php_get_installed_versions
# Wersja każdej instalacji ea-php
for p in /opt/cpanel/ea-php*/root/usr/bin/php; do echo "$p"; "$p" -v | head -1; done
# Stan pakietów (systemy oparte na RPM, przykład)
rpm -qa | grep -E '^ea-php[0-9]+-php-(cli|fpm|common)' | sort
W MultiPHP Manager widać, która domena używa której wersji i czy PHP-FPM jest włączone. Proszę odnotować wersje zainstalowane, ale nieprzypisane do żadnej domeny. Je również należy zaktualizować lub usunąć.
Prawidłowe traktowanie backportów
Jak u innych dostawców: wyświetlany numer wersji nie jest jedyną miarą. Jeśli poprawka jest dostarczana jako backport, numer może pozostać bez zmian. Dlatego proszę dodatkowo sprawdzić dziennik zmian pakietu i uwagi dostawcy.
# Przeszukaj dziennik zmian pakietu pod kątem numerów CVE (przykład)
rpm -q --changelog ea-php84-php-cli | grep -iE 'CVE-2026-1096(18|19)'
Brak wpisu nie oznacza automatycznie, że poprawki nie ma. Oznacza jednak, że potrzebne jest pisemne potwierdzenie, zanim uzna się serwer za załatany. Jak prawidłowo czytać wersje, opisuje artykuł Kontrola wersji PHP i stanu poprawek.
Aktualizacja, restart i kontrola
Aktualizację instaluje się w WHM przez aktualizację systemu lub menedżer pakietów. Potem trzeba zrestartować wszystkie procesy PHP. Same nowe pliki nie wystarczą, dopóki w pamięci działają stare procesy.
# Restart usług PHP-FPM wszystkich wersji (skrypt cPanel)
/scripts/restartsrv_apache_php_fpm
# Pełny restart Apache
/scripts/restartsrv_httpd
# Kontrola czasu startu procesów PHP
ps -eo pid,lstart,cmd | grep -E 'php-fpm|lsphp|php-cgi' | grep -v grep
Każdy proces PHP powinien mieć czas startu późniejszy niż aktualizacja. Jeśli tak nie jest, proszę zakończyć go celowo przez odpowiednią usługę. Przy kilku serwerach warto prowadzić krótki protokół dla każdej maszyny, którego można później użyć jako dowodu.
Aktualizacja CMS przez narzędzia cPanel, takie jak WP Toolkit, nie zamyka luki w PHP. Jest sensowna, ale nie zastępuje ani aktualizacji PHP, ani restartu.
Ustawianie wartości przejściowych centralnie
Jeśli dana wersja nie ma jeszcze poprawki, php.net zaleca środki przejściowe, które nie dają pełnej ochrony. W cPanel ustawia się je w MultiPHP INI Editor w trybie dla administratorów lub bezpośrednio w php.ini danej wersji ea-php. Wartości w .user.ini kont klientów nie wystarczają dla session.upload_progress.enabled.
; ogólnoserwerowy php.ini danej wersji (przykład)
session.upload_progress.enabled = 0
post_max_size = 32M
upload_max_filesize = 24M
Bez funkcji uploadu php.net podaje post_max_size = 8M. W PHP 8.5 dochodzi fatal_error_backtraces=0. Potem proszę ponownie zrestartować wszystkie procesy robocze. Limit pamięci ustawia się przez cgroups, na przykład limitami CloudLinux, a nie przez RLIMIT_AS czy RLIMIT_DATA. Dalsze szczegóły znajdą Państwo w artykule Środki doraźne bez poprawki.
Odpowiedzialność między operatorem serwera a właścicielami kont
Na serwerze cPanel z wieloma kontami administrator WHM odpowiada za PHP, usługi i konfigurację ogólnoserwerową. Właściciele poszczególnych kont odpowiadają za swoje aplikacje, wtyczki i dane dostępowe. Proszę poinformować właścicieli kont, kiedy i jak wykonano aktualizację, i zalecić im sprawdzenie aplikacji pod kątem nieprawidłowości. Jak sytuacja wygląda z perspektywy klienta, opisuje artykuł Hosting współdzielony.
Proszę zachować logi od 20.10.2026. Poprawka nie usuwa szkodliwego oprogramowania wprowadzonego wcześniej.
Jako dowód wystarczy prosty protokół dla każdego serwera: data i godzina aktualizacji, lista pakietów ea-php i alt-php z wersją przed i po, lista procesów z czasami startu po restarcie oraz ewentualne potwierdzenie dostawcy pakietów dotyczące backportów. Protokół należy przechowywać poza serwerem. Posłuży później jako dowód wobec klientów, ubezpieczycieli lub audytorów i ułatwi następną awaryjną aktualizację, bo kroki będą już opisane. Przy kilku serwerach cPanel warto ująć polecenia odczytu z tej strony w mały skrypt, który działa tak samo na wszystkich maszynach i zbiera wyniki. W ten sposób od razu widać różnice między serwerami, na przykład zapomnianą wersję PHP.
Jak konkretnie pomaga PHP SOS?
- Inwentaryzujemy pakiety ea-php, alt-php i systemowe oraz przypisujemy wszystkie konta do ich wersji PHP.
- Przez naszą usługę aktualizacji PHP aktualizujemy, restartujemy wszystkie usługi i dokumentujemy stan listami pakietów i czasami procesów.
- W razie potrzeby ustawiamy wartości przejściowe ogólnie dla serwera i w sposób niemożliwy do nadpisania.
- Sprawdzamy konta pod kątem typowych śladów włamania, a w razie ustaleń uruchamiamy usuwanie malware.
- Następnie ograniczamy liczbę wersji PHP i utwardzamy konfigurację.
Częste pytania
Gdzie w WHM zobaczę, która domena używa której wersji PHP?
W MultiPHP Manager w WHM widać dla każdej domeny przypisaną wersję oraz to, czy PHP-FPM jest aktywne. Pełną listę najlepiej uzupełnić zapytaniem z wiersza poleceń. Proszę zanotować także wersje, które nie są przypisane do żadnej domeny.
Czy klient cPanel może sam ustawić wartości przejściowe w .user.ini?
Dla session.upload_progress.enabled php.net wyraźnie wskazuje, że .user.ini i ini_set() nie wystarczą. Wartość należy ustawić w php.ini, w puli FPM lub w konfiguracji serwera. Może to zrobić tylko administrator serwera.
Czy wystarczy graceful restart Apache?
W przypadku PHP-FPM same usługi FPM muszą się zrestartować, przeładowanie Apache ich nie odnawia. Przy handlerach PHP opartych na Apache bezpieczną drogą jest pełny restart. Potem proszę sprawdzić czas startu wszystkich procesów PHP.
Co z CloudLinux i alt-php?
Na serwerach CloudLinux strony działają częściowo na własnych pakietach alt-php zamiast ea-php. Mają one własny stan pakietów i trzeba je sprawdzić oraz zaktualizować osobno.