Ukratko: Ako na poslužitelju radi više PHP verzija, nakon PHP2Shella svaku treba zasebno provjeriti, ažurirati i ponovno pokrenuti. Tipični izvori su operacijski sustav, hosting paneli poput Plesk-a ili cPanela, izvori trećih strana poput sury.org ili Remija, CloudLinux, LiteSpeed i samostalno kompilirane verzije. Tek potpun popis iz paketa, datoteka i aktivnih procesa pokazuje da doista nijedna verzija nije previđena.
Zaboravljena verzija
Poslužitelj koji radi nekoliko godina skuplja PHP verzije kao tavan stari namještaj. Panel je donio tri grane, za jednog je klijenta iz izvora treće strane dodana starija verzija, a operacijski sustav ima svoju. Svaka je jednom instalirana iz dobrog razloga. Samo što danas nitko više ne zna koja se još treba.
Nakon PHP2Shella upravo je to problem. Ispravci su objavljeni 21. listopada 2026. za PHP 8.5.12, 8.4.27, 8.3.36 i 8.2.35. No svaka instalacija na poslužitelju dobiva ih vlastitim putem, od vlastitog održavatelja paketa i u vlastito vrijeme. Za PHP 8.1 i starije postoje samo minimalni backportovi izvornog koda. Tko ažurira samo glavnu verziju, ostale ostavlja otvorenima.
Odakle toliko verzija
Sljedeći pregled navodi tipične izvore i primjere putova. Točni se putovi razlikuju po verziji i distribuciji.
| Izvor | Primjer puta | Tko isporučuje zakrpu |
|---|---|---|
| Operacijski sustav Debian/Ubuntu | /usr/bin/php8.3, /etc/php/8.3/ |
distribucija |
| Operacijski sustav RHEL obitelj | /usr/bin/php, /etc/php-fpm.d/ |
distribucija |
| Plesk | /opt/plesk/php/8.3/ |
Plesk |
| cPanel (EasyApache 4) | /opt/cpanel/ea-php83/ |
cPanel |
| CloudLinux alt-php | /opt/alt/php83/ |
CloudLinux |
| Remi Software Collection | /opt/remi/php83/ |
Remi |
| sury.org | /usr/bin/php8.3 kao kod sustava |
sury.org |
| LiteSpeed | /usr/local/lsws/lsphp83/ |
LiteSpeed odnosno izvor paketa |
| Samostalno kompilirano | često /usr/local/bin/php |
Vi sami |
| Kontejner | u image-u | izdavatelj image-a, ponovna izgradnja na Vama |
Osobito su podmukli paketi iz sury.org jer koriste iste putove kao distribucija. Dolazi li php8.3 iz Debiana ili iz sury.org, pokazuje tek izvor paketa. Posebnosti opisuju članci Repozitorij sury.org i Repozitorij Remi. Kako Plesk upravlja svojim verzijama, opisuje stranica Plesk poslužitelj: provjera i zakrpanje PHP verzija.
Pronaći sve PHP instalacije
Pouzdan popis nastaje iz tri pogleda. Naredbe samo čitaju i ovisno o poslužitelju mogu raditi neko vrijeme.
# 1. Paketi: što zna upravljanje paketima
dpkg-query -W -f='${Package}\t${Version}\n' '*php*' 2>/dev/null | grep -E "fpm|cli|cgi|mod-php|lsphp"
rpm -qa 2>/dev/null | grep -iE "php.*(fpm|cli|cgi|litespeed)|^php-[0-9]|^ea-php|^alt-php" | sort
# 2. Datoteke: izvršni PHP binariji, i izvan upravljanja paketima
find / -xdev -type f \( -name 'php' -o -name 'php[0-9]*' -o -name 'php-fpm*' -o -name 'php-cgi*' -o -name 'lsphp*' \) -perm -u+x 2>/dev/null
# 3. Procesi: što doista radi upravo sada, s vremenom pokretanja
ps -eo pid,user,lstart,cmd | grep -E "[p]hp-fpm|[p]hp-cgi|[l]sphp|[a]pache2|[h]ttpd|[f]rankenphp"
Usporedite tri popisa. Datoteka bez paketa upućuje na samostalno kompiliranu ili ručno kopiranu verziju. Proces bez odgovarajuće datoteke može upućivati na izbrisanu, ali još aktivnu instalaciju. Kod Apachea dodatno provjerite je li učitan PHP modul, primjerice naredbom apache2ctl -M ili httpd -M. Kontejneri i Kubernetes podovi u tim se popisima pojavljuju samo djelomično i traže zasebnu provjeru image-a.
Zakrpati svaku verziju zasebno
Kad svaka instalacija ima redak na Vašem popisu, za svaku slijedi isti tijek:
- Razjasniti odgovornost: dolazi li zakrpa od distribucije, panela, izvora treće strane ili od Vas samih?
- Procijeniti stanje: službeno ispravljena verzija, potvrđeni backport, nerazjašnjeno ili otvoreno.
- Ažurirati: putem izvora te instalacije, ne preko nekog drugog.
- Ponovno pokrenuti: uslugu te verzije, ne samo glavnu uslugu. Kod mod_php-a web-poslužitelj. Pojedinosti su u članku Ponovno pokrenuti PHP-FPM i sve workere.
- Kontrolirati: usporediti vrijeme pokretanja procesa s trenutkom ažuriranja.
- Dokumentirati: verzija, stanje paketa, dokaz, vrijeme ponovnog pokretanja.
Za verzije za koje zakrpe nema do migracije vrijede privremene mjere s php.net-a. Postavite ih zasebno za svaku verziju, jer svaka instalacija ima vlastiti php.ini i vlastite poolove.
Ne zaboravite naredbeni redak. Cron poslovi i skripte često rade s drugom PHP verzijom nego web-stranica. I ta verzija mora biti na ispravljenom stanju, čak i ako ne obrađuje web-zahtjeve.
Koju verziju koristi naredbeni redak, a koju kontejner?
Dva područja osobito često promaknu pri traženju. Prvo je naredbeni redak. Na Debianu i Ubuntuu sustav alternativa odlučuje koji se binarij krije iza naredbe php. Naredba update-alternatives --display php pokazuje koje su verzije registrirane i koja trenutno vrijedi. Cron poslovi koji pozivaju čvrst put poput /usr/bin/php7.4 ipak zaobilaze tu postavku. Zato se isplati pogledati crontabove svih korisnika i konfiguraciju panela koji sami stvaraju cron poslove.
Drugo su područje kontejneri. Docker kontejner na poslužitelju donosi vlastitu PHP verziju koja se ne pojavljuje ni u jednom popisu paketa hosta. Naredba docker ps prikazuje aktivne kontejnere; nalazi li se u njima PHP i u kojoj verziji, otkriva pogled u image ili php -v u kontejneru. Zakrpa se tamo ne provodi na hostu, nego ponovnom izgradnjom image-a i zamjenom kontejnera.
Manje je sigurnije
Najbolja je provjera ona koju ne treba raditi. Svaka instalirana PHP verzija udvostručuje trud kod sljedeće ranjivosti. Nakon PHP2Shella zato se isplati jasno pravilo: svaka verzija na poslužitelju treba svrhu i odgovornu osobu. Što ih nema, najprije se deaktivira, a nakon razdoblja promatranja ukloni. Više o tome u članku Isključiti stare PHP verzije u hosting panelu.
Kako PHP SOS konkretno pomaže?
- Za Vaše poslužitelje izrađujemo potpun popis svih PHP instalacija iz paketa, datoteka, procesa i kontejnera.
- Po verziji razjašnjavamo podrijetlo, odgovornost i stanje zakrpe.
- U okviru PHP usluge zakrpa ažuriramo svaku verziju, ponovno pokrećemo svaku uslugu i dokazujemo stanje.
- Zajedno s Vama određujemo koje verzije ostaju, a ostale kontrolirano uklanjamo.
Česta pitanja
Zašto na mom poslužitelju radi više PHP verzija?
Česti su razlozi hosting paneli koji donose vlastite PHP buildove, izvori trećih strana poput sury.org ili Remija za novije verzije te starije aplikacije koje trebaju određenu verziju. Često se tome pridodaje i PHP verzija operacijskog sustava.
Je li opasna PHP verzija koju nijedna web-stranica ne koristi?
Dok je instalirana i aktivna kao usluga, može biti dostupna, primjerice preko testne domene, zaboravljenog poola ili cron posla. Uz to je kasnije netko može greškom dodijeliti nekoj web-stranici. Nepotrebne verzije trebali biste ukloniti.
Kako pronaći sve PHP instalacije na Linux poslužitelju?
Kombinirajte tri pogleda: instalirane pakete, izvršne PHP datoteke u datotečnom sustavu i aktivne procese. Tek kad sva tri daju istu sliku, popis je potpun.
Moram li nakon ažuriranja svaku verziju zasebno ponovno pokrenuti?
Da. Svaka verzija u pravilu ima vlastitu FPM uslugu, LiteSpeed vlastite lsphp procese, a mod_php živi u Apacheovu procesu. Ponovno pokretanje glavne usluge ne obnavlja ostale.