Fil-qosor: Li tikkompila PHP ifisser li tniżżel il-pakkett sors uffiċjali minn php.net, tistabbilixxi b'./configure l-interfaces u l-estensjonijiet mixtieqa, tibni b'make, tivverifika b'make test u mbagħad tinstalla. Dan jagħti kontroll sħiħ fuq il-verżjoni u l-ambitu. Il-prezz: għal kull aġġornament tas-sigurtà intom responsabbli, kif kien l-aħħar f'PHP2Shell, meta kellu jinbena mill-ġdid u l-proċessi kollha jerġgħu jinbdew.
Meta builds proprji ta' PHP għandhom sens
Il-maġġoranza tas-servers jieħdu PHP minn sors ta' pakketti: mid-distribuzzjoni Linux, minn repository ta' terz jew permezz ta' immaġni ta' container. Għat-tħaddim normali dan ġeneralment huwa l-aħjar għażla, għax il-korrezzjonijiet tas-sigurtà jingħataw awtomatikament.
Builds proprji madankollu għandhom il-post tagħhom:
| Sitwazzjoni | Sors ta' pakketti | Build proprju |
|---|---|---|
| Server tal-web normali | ġeneralment aħjar | rarament meħtieġ |
| Verżjoni jew għażla mhux f'sors affidabbli | mhux disponibbli | għandu sens |
| Tfittix ta' żbalji f'PHP innifsu, debug build | limitat | għandu sens |
| Ambitu minimu ta' funzjonijiet għal sistemi speċjali | limitat | għandu sens |
| Aġġornamenti tas-sigurtà | jiġu mas-sors | kompitu proprju |
Min jiddeċiedi għal builds proprji jeħtieġ proċess fiss għall-aġġornamenti, inkella l-vantaġġ isir riskju.
Rekwiżiti
Skont il-manwal jinħtieġu GNU make u kompilatur C; minn PHP 8.4 il-kompilatur irid jappoġġa C11. Min jibni mir-repository Git minflok minn pakkett ta' rilaxx jeħtieġ barra minn hekk autoconf (minn 2.68), re2c (minn 1.0.3 għal PHP 8.3 u iktar ġodda) u bison (minn 3.0.0). Ir-README fil-kodiċi sors isemmi għal Ubuntu dan il-bidu:
sudo apt install -y pkg-config build-essential autoconf bison re2c libxml2-dev libsqlite3-dev
Għal kull estensjoni addizzjonali jżidu l-pakketti tal-iżvilupp xierqa, pereżempju għal OpenSSL jew libsodium.
Tniżżil tal-kodiċi sors u verifika tal-awtentiċità
PHP mibni waħdu huwa affidabbli biss daqs il-kodiċi sors tiegħu. php.net joffri kull pakkett b'checksum SHA-256 u firma GPG; iċ-ċwievet tar-release managers jinsabu fuq il-paġna tat-tniżżil u fuq il-paġna taċ-ċwievet 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 # qabbel mal-valur fuq php.net
gpg --verify php-8.4.27.tar.xz.asc php-8.4.27.tar.xz
Biss meta ċ-checksum u l-firma jaqblu, tkompli.
Kompilazzjoni ta' PHP: configure, make, test
Il-proċess għandu erba' passi:
- Ikkonfigura:
./configurebl-għażliet mixtieqa. Meta tibni minn Git, l-ewwel agħmel./buildconf. - Ibni:
make -j"$(nproc)"; l-għadd ta' jobs, skont ir-README, jikkorrispondi b'mod raġonevoli għall-għadd ta' cores tal-proċessur. - Ittestja:
make TEST_PHP_ARGS=-j4 testiħaddem is-suite tat-testijiet ta' PHP. - Installa:
make install, skont id-direttorju fil-mira b'drittijiet root.
Eżempju ta' build ta' PHP-FPM b'direttorju proprju fil-mira:
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
L-aktar għażliet importanti f'ħarsa:
| Għażla | Effett |
|---|---|
--enable-fpm |
jibni PHP-FPM; flimkien ma' --with-fpm-user, --with-fpm-group, --with-fpm-systemd |
--with-config-file-path |
direttorju fejn PHP ifittex il-php.ini |
--with-openssl |
appoġġ ta' OpenSSL; minn PHP 7.4 il-mogħdija tinstab permezz ta' pkg-config |
--with-sodium |
kriptografija moderna b'libsodium |
--disable-cgi |
ma jibnix il-varjant CGI, jekk ma jkunx hemm bżonnu |
--enable-debug |
simboli ta' debug, skont ir-README rakkomandat għall-iżvilupp, mhux għall-produzzjoni |
--enable-zts |
sigurtà tat-threads għal modalitajiet ta' tħaddim b'threads |
B'--prefix jistgħu jiġu installati diversi verżjonijiet mibnija waħedhom ħdejn xulxin, pereżempju taħt /opt/php-8.3 u /opt/php-8.4. Dan jiffaċilita l-bidliet, imma jeżiġi dixxiplina: kull verżjoni installata hija softwer separat li jrid jinbena mill-ġdid ma' kull rilaxx tas-sigurtà, anki jekk bħalissa ebda websajt ma tużah. Builds li m'għadx hemm bżonnhom iridu jitneħħew kompletament. Liema għażliet għandu build eżistenti turi php -i fil-linja “Configure Command”; hija l-aqwa mudell għall-bini mill-ġdid li jmiss.
Nota dwar OPcache: minn PHP 8.5, skont RFC aċċettat, OPcache huwa kkompilat sew. F'verżjonijiet eqdem jinbena bħala estensjoni u jitgħabba permezz ta' zend_extension. X'inhuma l-estensjonijiet u l-interfaces jispjegaw Kif tifhmu l-estensjonijiet ta' PHP u SAPI spjegat.
Builds proprji u sigurtà: l-obbligi wara PHP2Shell
PHP ikkompilat waħdek għandu vantaġġ reali tas-sigurtà: tibnu biss dak li teħtieġu. Kull estensjoni li ma tinbnix u kull modalità ta' tħaddim li ma tinbnix hija kodiċi li ma jistax ikun fih vulnerabbiltà. Build mingħajr CGI, b'ftit estensjonijiet u mogħdijiet ċari huwa ċar.
Mal-vantaġġ hemm obbligu iebes. Id-distribuzzjonijiet f'PHP2Shell ikkonsenjaw backports parzjalment fil-21 ta' Ottubru 2026; min jibni waħdu ma jirċievi xejn awtomatikament. Konkretament dan kien ifisser:
- Niżżel u vverifika l-kodiċi sors tal-verżjoni bil-korrezzjoni.
- Ibni mill-ġdid bl-istess għażliet;
php -ijuri l-linja oriġinali ta' configure. - Ħaddem it-testijiet u installa.
- Erġa' ibda l-proċessi kollha ta' PHP, kif deskritt taħt Erġa' ibda PHP-FPM u l-workers kollha.
- Iċċekkja l-verżjoni li taħdem, kif spjegat taħt Kif tivverifikaw sewwa l-verżjoni ta' PHP u l-istat tal-patches.
PHP mibni waħdu ma jidhir f'ebda maniġer tal-pakketti. Żommu inventarju ta' fuq liema servers jaħdmu builds proprji f'liema verżjoni, inkella jiġu injorati fil-vulnerabbiltà li jmiss.
Kif jgħin PHP SOS konkretament?
Permezz tas-Servizz ta' patch għal PHP nappoġġjaw lill-operaturi ta' builds proprji:
- Nirreġistraw l-istokk: Insibu verżjonijiet ta' PHP mibnija waħedhom u naqraw l-għażliet tal-bini tagħhom.
- Nibnu mill-ġdid: Verżjoni bil-korrezzjoni b'firma vverifikata, l-istess għażliet u eżekuzzjoni sħiħa tat-testijiet.
- Nirrilaxxaw u nerġgħu nibdew: Installazzjoni, restart tal-proċessi kollha, kontroll tal-verżjoni li taħdem.
- Nissimplifikaw: Fejn sors ta' pakketti miżmum jissodisfa l-istess skop, nuru t-tranżizzjoni.
Mistoqsijiet frekwenti
Meta jaqbel li PHP jiġi kkompilat waħdek?
Meta verżjoni jew għażla meħtieġa mhijiex disponibbli f'ebda sors ta' pakketti affidabbli, għall-iżvilupp u t-tfittix ta' żbalji f'PHP innifsu jew għal builds speċjali u rqaq ħafna. Għal servers tal-web normali, pakketti miżmuma huma ġeneralment l-aħjar għażla.
Kif nivverifika li l-kodiċi sors ta' PHP huwa awtentiku?
php.net joffri għal kull pakkett sors checksum SHA-256 u firma GPG. Qabblu ċ-checksum u vverifikaw il-firma ma' ċ-ċwievet tar-release managers ippubblikati fuq php.net.
Għandi nerġa' nikkompila wara rilaxx tas-sigurtà?
Iva. PHP mibni waħdek ma jirċievi l-ebda aġġornament mid-distribuzzjoni. Wara PHP2Shell dan kien ifisser: ibni l-kodiċi sors ta' 8.5.12, 8.4.27, 8.3.36 jew 8.2.35, installah u erġa' ibda l-proċessi kollha ta' PHP.
Fejn insib l-għażliet kollha ta' configure?
B'./configure --help fid-direttorju sors. Il-manwal isemmi l-għażliet ewlenin tal-qalba, l-għażliet għall-estensjonijiet jinsabu fuq il-paġni tal-manwal tagħhom.