# Več različic PHP na enem strežniku: vsako popravite posebej

> Več različic PHP na enem strežniku: poiščite vse namestitve, razjasnite izvor in odgovornost, vsako posebej popravite, znova zaženite in dokažite.

Vir: https://phpsos.de/sl/blog/mehrere-php-versionen-server/  
Stanje: 25.10.2026  
Ponudnik: PHP SOS, Nujna pomoč za PHP in varnost strežnikov. Takojšnja pomoč po WhatsAppu: https://wa.me/491736494914?text=Pozdravljeni%2C%20PHP%20SOS%2C%20potrebujemo%20pomo%C4%8D%20z%20na%C5%A1im%20stre%C5%BEnikom%20PHP.%20Podjetje%3A%20%E2%80%A6%20Spletna%20stran%3A%20%E2%80%A6

**Na kratko:** Če na strežniku teče več različic PHP, je treba po PHP2Shell vsako posebej preveriti, posodobiti in znova zagnati. Tipični viri so operacijski sistem, nadzorne plošče za gostovanje, kot sta Plesk ali cPanel, tretji viri, kot sta sury.org ali Remi, CloudLinux, LiteSpeed in sami prevedene različice. Šele popoln seznam iz paketov, datotek in tekočih procesov pokaže, ali ni bila res spregledana nobena različica.

## Pozabljena različica

Strežnik, ki teče že nekaj let, zbira različice PHP kot podstrešje staro pohištvo. Nadzorna plošča je prinesla tri veje, za eno stranko je iz tretjega vira prišla starejša različica, operacijski sistem ima svojo. Vsaka je bila nekoč nameščena iz dobrega razloga. Danes pa nihče več ne ve, katera se še potrebuje.

Po PHP2Shell je prav to težava. Popravki so izšli 21. oktobra 2026 za PHP 8.5.12, 8.4.27, 8.3.36 in 8.2.35. Vsaka namestitev na strežniku pa jih dobi po svoji poti, od svojega vzdrževalca paketa in ob svojem času. Za PHP 8.1 in starejše obstajajo samo minimalni povratni popravki v izvorni kodi. Kdor posodobi samo glavno različico, druge pusti odprte.

## Od kod toliko različic

Spodnji pregled navaja tipične vire in primere poti. Natančne poti se razlikujejo glede na različico in distribucijo.

| Vir | Primer poti | Kdo dobavi popravek |
|---|---|---|
| Operacijski sistem Debian/Ubuntu | `/usr/bin/php8.3`, `/etc/php/8.3/` | Distribucija |
| Operacijski sistem družine RHEL | `/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 |
| Zbirka programov Remi | `/opt/remi/php83/` | Remi |
| sury.org | `/usr/bin/php8.3` kot pri sistemu | sury.org |
| LiteSpeed | `/usr/local/lsws/lsphp83/` | LiteSpeed oz. vir paketov |
| Sami prevedeno | pogosto `/usr/local/bin/php` | Vi sami |
| Vsebniki | v sliki | Izdajatelj slike, ponovna gradnja je vaša |

Posebej zahrbtni so paketi sury.org, ker uporabljajo enake poti kot distribucija. Ali `php8.3` izvira iz Debiana ali iz sury.org, pokaže šele vir paketa. Posebnosti opisujeta prispevka [Repozitorij sury.org](https://phpsos.de/sl/blog/sury-repository-php/) in [Repozitorij Remi](https://phpsos.de/sl/blog/remi-repository-php/). Kako Plesk upravlja svoje različice, opisuje stran [Strežnik Plesk: preverjanje in popravljanje različic PHP](https://phpsos.de/sl/server/plesk/).

## Poiščite vse namestitve PHP

Zanesljiv seznam nastane iz treh pogledov. Ukazi so zgolj za branje in lahko na nekaterih strežnikih tečejo nekaj časa.

```bash
# 1. Paketi: kar pozna upravljanje paketov
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šljive binarne datoteke PHP, tudi zunaj upravljanja paketov
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: kar dejansko teče, s časom zagona
ps -eo pid,user,lstart,cmd | grep -E "[p]hp-fpm|[p]hp-cgi|[l]sphp|[a]pache2|[h]ttpd|[f]rankenphp"
```

Tri sezname primerjajte. Datoteka brez paketa kaže na sami prevedeno ali ročno kopirano različico. Proces brez ustrezne datoteke lahko kaže na izbrisano, a še tekočo namestitev. Pri Apacheu dodatno preverite, ali je naložen modul PHP, na primer z `apache2ctl -M` ali `httpd -M`. Vsebniki in podi Kubernetes se na teh seznamih pojavijo le delno in potrebujejo lasten pregled slik.

## Vsako različico popravite posebej

Ko ima vsaka namestitev vrstico na vašem seznamu, za vsako sledi isti postopek:

1. **Razjasnite odgovornost:** Ali popravek prihaja od distribucije, nadzorne plošče, tretjega vira ali od vas samih?
2. **Ocenite stanje:** uradna popravljena različica, potrjen backport, nerazjasnjeno ali odprto.
3. **Posodobite:** po poti zadevnega vira, ne po drugi.
4. **Znova zaženite:** storitev te različice, ne samo glavne storitve. Pri mod_php spletni strežnik. Podrobnosti so na strani [Ponovni zagon PHP-FPM in vseh workerjev](https://phpsos.de/sl/php2shell/php-fpm-neustart/).
5. **Preverite:** čas zagona procesov primerjajte s časom posodobitve.
6. **Dokumentirajte:** različica, stanje paketa, dokaz, čas ponovnega zagona.

Za različice, za katere popravka ni, do migracije veljajo prehodni ukrepi s php.net. Nastavite jih za vsako različico posebej, saj ima vsaka namestitev svoj php.ini in svoje poole.

> **Pomembno:**
> Ne pozabite ukazne vrstice. Cronjobi in skripti pogosto tečejo z drugo različico PHP kot spletna stran. Tudi ta različica mora biti na popravljenem stanju, čeprav ne obdeluje spletnih zahtev.

## Katero različico uporablja ukazna vrstica, katero vsebnik?

Dve področji pri iskanju zelo pogosto zdrsneta skozi sito. Prvo je ukazna vrstica. Pri Debianu in Ubuntuju sistem alternativ določa, katera binarna datoteka stoji za ukazom `php`. `update-alternatives --display php` pokaže, katere različice so registrirane in katera trenutno velja. Cronjobi, ki kličejo fiksno pot, kot je `/usr/bin/php7.4`, to nastavitev vendarle zaobidejo. Zato se splača pogledati v crontabe vseh uporabnikov in v konfiguracijo nadzornih plošč, ki ustvarjajo lastne cronjobe.

Drugo področje so vsebniki. Vsebnik Docker na strežniku prinaša lastno različico PHP, ki se ne pojavi v nobenem seznamu paketov gostitelja. `docker ps` prikaže tekoče vsebnike; ali je v njem PHP in v kateri različici, pokaže pogled v sliko ali `php -v` v vsebniku. Popravek tam ne poteka na gostitelju, temveč z ponovno gradnjo slike in zamenjavo vsebnika.

## Manj je varneje

Najboljše preverjanje je tisto, ki ga ni treba narediti. Vsaka nameščena različica PHP podvoji trud ob naslednji ranljivosti. Po PHP2Shell se zato splača jasno pravilo: vsaka različica na strežniku potrebuje namen in odgovorno osebo. Kar ju nima, se najprej deaktivira in po obdobju opazovanja odstrani. Več v prispevku [Izklop starih različic PHP v nadzorni plošči](https://phpsos.de/sl/blog/alte-php-versionen-abschalten/).

## Kako PHP SOS pomaga konkretno?

- Za vaše strežnike pripravimo popoln seznam vseh namestitev PHP iz paketov, datotek, procesov in vsebnikov.
- Za vsako različico razjasnimo izvor, odgovornost in stanje popravkov.
- V okviru [storitve popravljanja PHP](https://phpsos.de/sl/leistungen/php-patch-service/) posodobimo vsako različico, znova zaženemo vsako storitev in dokažemo stanje.
- Skupaj z vami določimo, katere različice ostanejo, preostale pa nadzorovano odstranimo.


## Pogosta vprašanja

**Zakaj na mojem strežniku teče več različic PHP?**  
Pogosti razlogi so nadzorne plošče za gostovanje, ki prinašajo lastne gradnje PHP, tretji viri, kot sta sury.org ali Remi, za novejše različice in starejše aplikacije, ki zahtevajo določeno različico. Pogosto je zraven še različica PHP operacijskega sistema.

**Ali je različica PHP, ki je nobena spletna stran ne uporablja, nevarna?**  
Dokler je nameščena in aktivna kot storitev, je lahko dosegljiva, na primer prek testne domene, pozabljenega poola ali cronjoba. Poleg tega jo je pozneje mogoče po pomoti dodeliti spletni strani. Nepotrebne različice odstranite.

**Kako najdem vse namestitve PHP na strežniku Linux?**  
Združite tri poglede: nameščene pakete, izvršljive datoteke PHP v datotečnem sistemu in tekoče procese. Šele ko vsi trije dajo isto sliko, je seznam popoln.

**Ali moram po posodobitvi vsako različico posebej znova zagnati?**  
Da. Vsaka različica ima praviloma lastno storitev FPM, LiteSpeed lastne procese lsphp, mod_php živi v procesu Apache. Ponovni zagon glavne storitve ostalih ne obnovi.

## Viri

- [php.net: varnostna obvestila](https://www.php.net/)
- [php.net: podprte različice](https://www.php.net/supported-versions.php)
- [Red Hat Security Bulletin RHSB-2026-013](https://access.redhat.com/security/vulnerabilities/RHSB-2026-013)
