# cPanel i WHM: zabezpieczenie PHP

> Aktualizacja PHP w cPanel po PHP2Shell: sprawdź pakiety ea-php, zrestartuj PHP-FPM i Apache, ustaw wartości przejściowe centralnie i udokumentuj stan poprawki.

Źródło: https://phpsos.de/pl/server/cpanel/  
Stan: 25.10.2026  
Dostawca: PHP SOS, Pomoc awaryjna PHP i bezpieczeństwo serwerów. Natychmiastowa pomoc przez WhatsApp: https://wa.me/491736494914?text=Dzie%C5%84%20dobry%2C%20PHP%20SOS%2C%20potrzebujemy%20pomocy%20z%20naszym%20serwerem%20PHP.%20Firma%3A%20%E2%80%A6%20Strona%20internetowa%3A%20%E2%80%A6

**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.

```bash
# 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.

```bash
# 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](https://phpsos.de/pl/php2shell/php-version-pruefen/).

## 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.

```bash
# 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.

> **Ważne:**
> 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`.

```ini
; 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](https://phpsos.de/pl/php2shell/sofortmassnahmen-ohne-patch/).

## 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](https://phpsos.de/pl/server/shared-hosting/).

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](https://phpsos.de/pl/leistungen/php-patch-service/) 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](https://phpsos.de/pl/leistungen/malware-entfernung/).
- 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.

## Źródła

- [php.net: komunikaty bezpieczeństwa](https://www.php.net/)
- [PHP 8 ChangeLog](https://www.php.net/ChangeLog-8.php)
- [php.net: obsługiwane wersje](https://www.php.net/supported-versions.php)
- [BSI](https://www.bsi.bund.de/)
