# Nakon ažuriranja: ponovno pokrenite PHP-FPM i sve workere

> Ponovno pokrenite PHP-FPM nakon PHP2Shell ažuriranja: zašto nove datoteke nisu dovoljne, koje usluge vrijede i kako provjeriti da ne radi stari worker.

Izvor: https://phpsos.de/hr/php2shell/php-fpm-neustart/  
Stanje: 25.10.2026  
Pružatelj: PHP SOS, PHP hitna pomoć i sigurnost poslužitelja. Hitna pomoć putem WhatsAppa: https://wa.me/491736494914?text=Pozdrav%20PHP%20SOS%2C%20trebamo%20pomo%C4%87%20s%20na%C5%A1im%20PHP%20poslu%C5%BEiteljem.%20Tvrtka%3A%20%E2%80%A6%20Web-stranica%3A%20%E2%80%A6

**Ukratko:** Nakon PHP ažuriranja morate ponovno pokrenuti PHP-FPM i sve druge usluge koje učitavaju PHP. Nove datoteke na tvrdom disku nisu dovoljne dok stari PHP procesi rade u memoriji. Tek nakon ponovnog pokretanja poslužitelj radi s ispravljenim kodom PHP-a 8.5.12, 8.4.27, 8.3.36, 8.2.35 ili backportom Vašeg pružatelja.

## Zašto morate ponovno pokrenuti PHP-FPM

Ažuriranje paketa zamjenjuje datoteke na tvrdom disku. Procesi koji već rade ipak su stari programski kod već učitali u memoriju i s njim nastavljaju raditi. PHP-FPM, Apache s mod_php ili LiteSpeed svoje workere često drže na životu danima.

Za PHP2Shell to je osobito važno. Ranjivost [CVE-2026-109619](https://phpsos.de/hr/php2shell/cve-2026-109619/) vezana je upravo uz stanje koje između zahtjeva ostaje u istom workeru. Worker sa starim kodom ostaje ranjiv, bez obzira koja verzija leži na disku. Prema php.net-u stoga se svi workeri i procesi moraju ponovno pokrenuti.

Neki upravitelji paketa nakon ažuriranja automatski ponovno pokreću usluge, drugi ne. Ne oslanjajte se na to, nego provjerite rezultat.

Tipična slika iz svakodnevice: upravljanje paketima javlja „PHP ažuriran“, nadzor ne pokazuje pogreške, web-stranica radi. Ipak stari workeri i dalje poslužuju svaki zahtjev jer nitko nije ponovno pokrenuo uslugu. Izvana se to stanje ne može prepoznati. Zato provjera vremena pokretanja procesa pripada svakom ažuriranju.

## Koje usluge učitavaju PHP?

| Način rada | Što ponovno pokrenuti | Tipična naredba (nazivi se razlikuju po distribuciji) |
|---|---|---|
| PHP-FPM | svaku FPM uslugu, po instaliranoj verziji | `systemctl restart php8.3-fpm` ili `systemctl restart php-fpm` |
| Apache s mod_php | Apache | `systemctl restart apache2` ili `systemctl restart httpd` |
| php-cgi | web-poslužitelj koji ga poziva odnosno FastCGI wrapper | ovisno o postavci |
| LiteSpeed | LiteSpeed i lsphp procese | putem LiteSpeed administracije ili njegove usluge |
| FrankenPHP | FrankenPHP uslugu ili kontejner | `systemctl restart frankenphp` ili iznova stvoriti kontejner |
| Docker, Kubernetes | iznova stvoriti kontejnere iz novog image-a | vidi [Zakrpa za PHP u Docker kontejnerima](https://phpsos.de/hr/php2shell/docker-container-patchen/) |

Kod mod_php vrijedi: ažuriranje se tiče samog Apachea jer PHP nalazi u svakom Apache procesu. Zašto je taj način rada osobito osjetljiv, piše na stranici [Zašto mod_php nosi najviši rizik](https://phpsos.de/hr/php2shell/mod-php-risiko/). Za LiteSpeed pojedinosti pronađite na stranici [LiteSpeed i LSAPI](https://phpsos.de/hr/server/litespeed/).

## Ponovno pokretanje PHP-FPM-a: naredbe

Prvo pronađite sve PHP usluge na poslužitelju. Plesk, cPanel i druga sučelja donose vlastite PHP usluge s vlastitim nazivima; popis ih prikazuje.

```bash
systemctl list-units --type=service | grep -i -E "php|lsws|litespeed|frankenphp|apache2|httpd"
```

Zatim ponovno pokrenite svaku pronađenu PHP uslugu, a ne samo prvu:

```bash
sudo systemctl restart php8.3-fpm
sudo systemctl restart php8.2-fpm      # ako je instalirana druga grana
sudo systemctl restart apache2         # kod mod_php; obitelj RHEL: httpd
```

Preporučujemo `restart` umjesto `reload`. Kod reloada glavni proces ostaje; to je namijenjeno promjenama konfiguracije. Nakon sigurnosnog ažuriranja želite biti sigurni da je svaki proces nov.

> **Važno:**
> Ako ste dodatno postavili privremene mjere poput `session.upload_progress.enabled=0` ili čvrsta ograničenja memorije, i one djeluju tek nakon ponovnog pokretanja. Jedno ponovno pokretanje obavlja oboje u jednom koraku.

## Provjera da više ne radi stari worker

Usporedite vrijeme pokretanja procesa s trenutkom ažuriranja. Sve su naredbe isključivo čitajuće.

```bash
ps -o pid,lstart,cmd -C php-fpm8.3     # unter RHEL: -C php-fpm
systemctl status php8.3-fpm            # redak „Active: … since …“
needrestart -r l                       # Debian/Ubuntu, ako je instaliran
```

Ako je neki proces stariji od ažuriranja, nije bio obuhvaćen. Česti uzroci su zaboravljena druga PHP grana, vlastita pool usluga iz hosting panela ili kontejner koji je samo ponovno pokrenut umjesto da je stvoren iz novog image-a. Radi li ispravna verzija, pokazuje stranica [Ispravna provjera verzije PHP-a i stanja zakrpe](https://phpsos.de/hr/php2shell/php-version-pruefen/).

## Dokumentirati ponovno pokretanje

Za svaki poslužitelj zabilježite trenutak ažuriranja i ponovnog pokretanja. Taj trenutak dijeli vrijeme u kojem je poslužitelj bio ranjiv od vremena nakon toga. Za kasniju provjeru tragova, za osiguravatelje i za moguću prijavu prema GDPR-u to je najvažnija referentna točka. Osim toga čuvajte zapisnike poslužitelja od 20. listopada, kako preporučuje stručni tisak.

Na poslužiteljima s mnogo web-stranica isplati se kratka tablica: poslužitelj, usluga, verzija PHP-a, verzija paketa, trenutak ponovnog pokretanja i osoba koja je ponovno pokrenula. Tako se praznine u pokrivenosti brzo uoče, primjerice pool koji je previđen ili testni sustav koji nitko nije imao na popisu.

## Kako PHP SOS konkretno pomaže?

U sklopu [usluge PHP zakrpe](https://phpsos.de/hr/leistungen/php-patch-service/) ažuriranje i ponovno pokretanje preuzimamo kao povezan tijek:

- **Utvrditi usluge:** Pronalazimo sve procese koji učitavaju PHP, i iz hosting panela i kontejnera.
- **Kontrolirano ponovno pokrenuti,** u dogovoru s Vama u prikladnom trenutku i uz pogled na tekuće narudžbe ili obrasce.
- **Naknadno provjeriti** da nijedan proces nije stariji od ažuriranja i da web-stranica normalno odgovara.
- **Protokolirati:** verzije, stanja paketa i vremena ponovnog pokretanja po poslužitelju.


## Česta pitanja

**Je li systemctl reload dovoljan umjesto restart?**  
Za PHP2Shell preporučujemo restart. Reload obično ponovno pokrene workere, ali glavni proces može nastaviti raditi. Naredbom restart osiguravate da ne ostane nijedan proces sa starim kodom. Kratkom prekidu nasuprot stoji jasan dokaz.

**Moram li nakon PHP ažuriranja ponovno pokrenuti cijeli poslužitelj?**  
U pravilu ne. Dovoljno je ponovno pokrenuti sve usluge koje učitavaju PHP: PHP-FPM, Apache kod mod_php, LiteSpeed, FrankenPHP ili pogođene kontejnere. Ponovno pokretanje cijelog poslužitelja je jednostavna varijanta ako niste sigurni koje usluge koriste PHP.

**Pokreće li moj pružatelj hostinga PHP nakon ažuriranja automatski ponovno?**  
To ovisi o pružatelju. Pitajte konkretno jesu li nakon zakrpe svi PHP procesi ponovno pokrenuti i zatražite pisanu potvrdu.

## Izvori

- [php.net: sigurnosne objave](https://www.php.net/)
- [PHP 8 ChangeLog](https://www.php.net/ChangeLog-8.php)
