Aktuálna situácia: PHP2Shell. Dve kritické zraniteľnosti PHP (CVSS 9.2) umožňujú spustenie škodlivého kódu bez prihlásenia. Záplaty od 21. 10. 2026.Čo treba urobiť teraz →

Kompilácia PHP zo zdrojového kódu

PHP si možno zostaviť sám pomocou configure a make. Prináša to kontrolu nad rozšíreniami a voľbami, ale aj plnú zodpovednosť za každú bezpečnostnú aktualizáciu.

Stav 5 min čítaniaZnalosti o PHP

Stručne: Kompilovať PHP znamená stiahnuť oficiálny zdrojový balík z php.net, pomocou ./configure určiť požadované rozhrania a rozšírenia, zostaviť pomocou make, overiť pomocou make test a potom nainštalovať. Dáva to plnú kontrolu nad verziou a rozsahom. Cena: za každú bezpečnostnú aktualizáciu zodpovedáte sami, ako naposledy pri PHP2Shell, keď sa muselo zostaviť znova a reštartovať všetky procesy.

Kedy sú vlastné zostavenia PHP zmysluplné

Väčšina serverov berie PHP zo zdroja balíkov: z distribúcie Linuxu, z repozitára tretej strany alebo cez obraz kontajnera. Pre bežnú prevádzku je to zvyčajne najlepšia voľba, pretože sa bezpečnostné opravy dodávajú automaticky.

Vlastné zostavenia majú napriek tomu svoje miesto:

Situácia Zdroj balíkov Vlastné zostavenie
Bežný webový server zvyčajne lepšie zriedka potrebné
Verzia alebo voľba nie je v dôveryhodnom zdroji nie je dostupná zmysluplné
Hľadanie chýb v samotnom PHP, debug zostavenie obmedzené zmysluplné
Minimálny rozsah funkcií pre špeciálne systémy obmedzené zmysluplné
Bezpečnostné aktualizácie prichádzajú so zdrojom vlastná úloha

Kto sa rozhodne pre vlastné zostavenia, potrebuje pevný proces aktualizácií, inak sa výhoda zmení na riziko.

Predpoklady

Podľa príručky sa vyžaduje GNU make a kompilátor C; od PHP 8.4 musí kompilátor podporovať C11. Kto zostavuje z repozitára Git namiesto vydaného balíka, potrebuje navyše autoconf (od 2.68), re2c (od 1.0.3 pre PHP 8.3 a novšie) a bison (od 3.0.0). README v zdrojovom kóde uvádza pre Ubuntu tento úvod:

sudo apt install -y pkg-config build-essential autoconf bison re2c libxml2-dev libsqlite3-dev

Ku každému ďalšiemu rozšíreniu pribudnú príslušné vývojové balíky, napríklad pre OpenSSL alebo libsodium.

Stiahnutie zdrojového kódu a kontrola pravosti

Vlastnoručne zostavené PHP je len tak dôveryhodné ako jeho zdrojový kód. php.net ponúka každý balík s kontrolným súčtom SHA-256 a podpisom GPG; kľúče release manažérov sú na stránke sťahovania a na stránke s kľúčmi GPG.

curl -O https://www.php.net/distributions/php-8.4.27.tar.xz
curl -O https://www.php.net/distributions/php-8.4.27.tar.xz.asc
sha256sum php-8.4.27.tar.xz                     # porovnať s hodnotou na php.net
gpg --verify php-8.4.27.tar.xz.asc php-8.4.27.tar.xz

Až keď kontrolný súčet a podpis sedia, pokračuje sa ďalej.

Kompilácia PHP: configure, make, test

Postup má štyri kroky:

  1. Konfigurácia: ./configure s požadovanými voľbami. Pri zostavení z Gitu predtým spustiť ./buildconf.
  2. Zostavenie: make -j"$(nproc)"; počet jobov zodpovedá podľa README zmysluplne počtu jadier procesora.
  3. Testovanie: make TEST_PHP_ARGS=-j4 test spustí testovaciu sadu PHP.
  4. Inštalácia: make install, podľa cieľového adresára s právami root.

Príklad zostavenia PHP-FPM s vlastným cieľovým adresárom:

tar xf php-8.4.27.tar.xz && cd php-8.4.27
./configure --prefix=/opt/php-8.4 \
  --with-config-file-path=/opt/php-8.4/etc \
  --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data --with-fpm-systemd \
  --with-openssl --with-sodium \
  --disable-cgi
make -j"$(nproc)"
make TEST_PHP_ARGS=-j4 test
sudo make install
/opt/php-8.4/bin/php -v

Najdôležitejšie voľby v prehľade:

Voľba Účinok
--enable-fpm zostaví PHP-FPM; k tomu --with-fpm-user, --with-fpm-group, --with-fpm-systemd
--with-config-file-path adresár, v ktorom PHP hľadá php.ini
--with-openssl podpora OpenSSL; od PHP 7.4 sa cesta nachádza cez pkg-config
--with-sodium moderná kryptografia s libsodium
--disable-cgi vynecháva variant CGI, ak sa nepotrebuje
--enable-debug ladiace symboly, podľa README odporúčané pre vývoj, nie pre produkciu
--enable-zts bezpečnosť vlákien pre spôsoby prevádzky s vláknami

Pomocou --prefix možno nainštalovať vedľa seba viac vlastnoručne zostavených verzií, napríklad v /opt/php-8.3 a /opt/php-8.4. Uľahčuje to prechody, ale vyžaduje disciplínu: každá nainštalovaná verzia je samostatný softvér, ktorý sa musí pri každom bezpečnostnom vydaní zostaviť znova, aj keď ju práve nepoužíva žiadny web. Zostavenia, ktoré sa už nepotrebujú, patria úplne odstrániť. Ktoré voľby má existujúce zostavenie, ukáže php -i v riadku „Configure Command“; je to najlepšia predloha pre ďalšie zostavenie.

Poznámka k OPcache: od PHP 8.5 je OPcache podľa prijatého RFC pevne skompilovaná. Pri starších verziách sa zostavuje ako rozšírenie a načítava pomocou zend_extension. Čo sú rozšírenia a rozhrania, vysvetľujú Pochopenie rozšírení PHP a SAPI vysvetlené.

Vlastné zostavenia a bezpečnosť: povinnosti po PHP2Shell

Samostatne kompilované PHP má skutočnú bezpečnostnú výhodu: zostavíte len to, čo potrebujete. Každé nezostavené rozšírenie a každý nezostavený spôsob prevádzky je kód, ktorý nemôže obsahovať zraniteľnosť. Zostavenie bez CGI, s niekoľkými rozšíreniami a jasnými cestami je prehľadné.

Proti tomu stojí tvrdá povinnosť. Distribúcie dodali pri PHP2Shell backporty čiastočne 21. 10. 2026; kto zostavuje sám, nedostane nič automaticky. Konkrétne to znamenalo:

  1. Stiahnuť a skontrolovať zdrojový kód opravenej verzie.
  2. Zostaviť znova s identickými voľbami; php -i ukazuje pôvodný riadok configure.
  3. Spustiť testy a nainštalovať.
  4. Reštartovať všetky procesy PHP, ako je opísané v Reštart PHP-FPM a všetkých workerov.
  5. Skontrolovať bežiacu verziu, ako vysvetľuje Správna kontrola verzie PHP a stavu záplat.
Dôležité

Vlastnoručne zostavené PHP sa neobjaví v žiadnom správcovi balíkov. Veďte inventár, na ktorých serveroch beží ktoré vlastné zostavenie v akej verzii, inak ich pri ďalšej zraniteľnosti prehliadnete.

Ako PHP SOS konkrétne pomáha?

Prostredníctvom služby záplatovania PHP podporujeme prevádzkovateľov vlastných zostavení:

  • Zistenie stavu: Nachádzame vlastnoručne zostavené verzie PHP a čítame ich voľby zostavenia.
  • Nové zostavenie: Opravená verzia s overeným podpisom, rovnakými voľbami a kompletným testovacím behom.
  • Nasadenie a reštart: Inštalácia, reštart všetkých procesov, kontrola bežiacej verzie.
  • Zjednodušenie: Kde rovnaký účel plní udržiavaný zdroj balíkov, ukazujeme prechod naň.

Časté otázky

Kedy sa oplatí skompilovať PHP samostatne?

Keď potrebná verzia alebo voľba nie je dostupná v žiadnom dôveryhodnom zdroji balíkov, pri vývoji a hľadaní chýb v samotnom PHP alebo pri veľmi štíhlych, špeciálnych zostaveniach. Pre bežné webové servery sú udržiavané balíky zvyčajne lepšou voľbou.

Ako overím, že zdrojový kód PHP je pravý?

php.net ponúka ku každému zdrojovému balíku kontrolný súčet SHA-256 a podpis GPG. Porovnajte kontrolný súčet a overte podpis kľúčmi release manažérov zverejnenými na php.net.

Musím po bezpečnostnom vydaní kompilovať znova?

Áno. Vlastnoručne zostavené PHP nedostáva aktualizácie od distribúcie. Po PHP2Shell to znamenalo: zostaviť zdrojový kód 8.5.12, 8.4.27, 8.3.36 alebo 8.2.35, nainštalovať ho a reštartovať všetky procesy PHP.

Kde nájdem všetky možnosti configure?

Pomocou ./configure --help v zdrojovom adresári. Príručka uvádza najdôležitejšie jadrové možnosti, možnosti pre rozšírenia sú na stránkach príručky týchto rozšírení.

Zdroje

Okamžitý kontakt

Každá hodina sa počíta. Napíšte nám hneď.

Stručne opíšte systém, verziu PHP a svoje pozorovanie. Ozveme sa, vyjasníme situáciu a budeme pracovať na diaľku, kým nebude incident uzavretý a zdokumentovaný.

Okamžitá pomoc