Trumpai: PHP istorija prasideda 1994 m. nuo Rasmuso Lerdorfo, kuris C kalba parašytas CGI programas savo asmeninei svetainei pavadino „Personal Home Page Tools“. 1998 m. pasirodė PHP 3, 2000 m. PHP 4 su Zend Engine, 2004 m. PHP 5, 2015 m. PHP 7 ir 2020 m. PHP 8. Šiandien kiekvienų metų lapkritį išleidžiama nauja versija, kuri prižiūrima ketverius metus.
Kaip atsirado PHP: Personal Home Page Tools (1994–1997 m.)
Pasak PHP vadovo, 1994 m. Rasmus Lerdorf parašė C kalba CGI programų seriją. Iš pradžių jos turėjo tik fiksuoti jo internetinio gyvenimo aprašymo apsilankymus. Rinkinį jis pavadino „Personal Home Page Tools“, o pirminį tekstą paskelbė 1995 m. birželį. Taip ir kiti galėjo naudoti bei tobulinti šiuos įrankius.
1995 m. rugsėjį Lerdorfas įrankius išplėtė ir laikinai pavadino „FI“ (Forms Interpreter). 1995 m. spalį sekė visiškai nauja versija, vėl pavadinta PHP. 1996 m. balandį jis abu pavadinimus sujungė į PHP/FI. Ši versija 1996 m. birželį gavo 2.0 versijos statusą, o 1997 m. lapkritį paliko beta etapą.
Jau šis ankstyvasis etapas iki šiol formuoja PHP: kalba atsirado dėl praktinio poreikio, greitai duoda rezultatų ir yra toliau plėtojama atviros bendruomenės.
PHP 3 ir Zend Engine (1997–2004 m.)
1997 m. Andi Gutmans ir Zeev Suraski iš Tel Avivo pradėjo iš naujo rašyti analizatorių (parser), t. y. dalį, kuri nuskaito ir išskaido pirminį tekstą. Kartu su Lerdorfu iš to atsirado nauja kalba, kuri vadinosi tiesiog „PHP“. Pavadinimas tapo rekursyvia santrumpa „PHP: Hypertext Preprocessor“. PHP 3.0 pasirodė 1998 m. birželį kaip PHP/FI 2.0 įpėdinis. Svarbiausia buvo gera plečiamumo galimybė ir pirmasis objektinio programavimo palaikymas.
Vėliau Gutmans ir Suraski branduolį parašė iš naujo. Rezultatas buvo Zend Engine, pavadintas pagal jų vardus Zeev ir Andi. Jis pristatytas 1999 m. viduryje. PHP 4.0 pasirodė 2000 m. gegužę ir atnešė geresnį našumą, HTTP sesijas ir išvesties buferizavimą.
2004 m. liepą sekė PHP 5 su Zend Engine 2.0 ir nauju objektų modeliu. 5 serija ilgai išliko naudojama ir augo su kiekviena papildoma versija. Su PHP 5.3.3 atsirado FastCGI Process Manager (FPM) kaip atskiras veikimo režimas, su PHP 5.5.0 baitkodo talpykla OPcache tapo kartu pateikiamo komplekto dalimi.
Neįvykęs PHP 6 ir šuolis į PHP 7 (2005–2019 m.)
PHP 6 turėjo atnešti išsamų Unicode palaikymą, t. y. vienodą visų rašto ženklų apdorojimą. Pasak vadovo, nuo šio darbo buvo atsisakyta. Kai kurios planuotos funkcijos perėjo į PHP 5.3 (vardų erdvės) ir PHP 5.4 (savybių rinkiniai, angl. traits, ir trumpas masyvų žymėjimas []). Todėl kita didelė versija gavo numerį 7.
PHP 7.0 pasirodė 2015 m. gruodžio 3 d. su Zend Engine 3.0. Pagrindas buvo projektas PHPNG, branduolio pertvarka, vadovaujama Dmitrijaus Stogovo. Susijusiame RFC, t. y. oficialiame pakeitimo pasiūlyme, minimas realių programų, tokių kaip WordPress ir Drupal, našumo padidėjimas nuo 20 iki 110 procentų. Naujovės, be kita ko, buvo nulinio sujungimo operatorius ?? ir anoniminės klasės.
<?php
// Nuo PHP 7.0: numatytoji reikšmė be isset() grandinės
$sprache = $_GET['lang'] ?? 'de';
7 serija baigėsi PHP 7.4. Paskutinė jos versija, 7.4.33, pasirodė 2022 m. lapkričio 3 d.; pasak php.net, palaikymas baigėsi 2022 m. lapkričio 28 d.
PHP 8 ir metinis ritmas (2020 m. iki šiol)
PHP 8.0 pasirodė 2020 m. lapkričio 26 d. su pavadintais argumentais, sąjungos tipais, atributais, nullsafe operatoriumi ?->, match išraiškomis ir JIT kompiliatoriumi. Nuo to laiko kasmet išleidžiama nauja papildoma versija. Ką atnešė kiekviena versija, aprašo apžvalga PHP 8.0–8.5.
| Versija | Pirmasis išleidimas | Pagrindiniai punktai |
|---|---|---|
| PHP 3.0 | 1998 m. birželis | naujas analizatorius, pavadinimas „PHP: Hypertext Preprocessor“ |
| PHP 4.0 | 2000 m. gegužė | Zend Engine, sesijos, išvesties buferizavimas |
| PHP 5.0 | 2004 m. liepa | Zend Engine 2.0, naujas objektų modelis |
| PHP 7.0 | 2015 m. gruodžio 3 d. | Zend Engine 3.0, gerokai greitesnis |
| PHP 8.0 | 2020 m. lapkričio 26 d. | JIT, atributai, sąjungos tipai |
| PHP 8.1 | 2021 m. lapkričio 25 d. | enum, Fibers, readonly savybės |
| PHP 8.2 | 2022 m. gruodžio 8 d. | readonly klasės, DNF tipai |
| PHP 8.3 | 2023 m. lapkričio 23 d. | tipizuotos klasių konstantos |
| PHP 8.4 | 2024 m. lapkričio 21 d. | Property Hooks, asimetrinis matomumas |
| PHP 8.5 | 2025 m. lapkričio 20 d. | Pipe operatorius, URI plėtinys |
2024 m. PHP projektas balsavo dėl naujo leidimų ciklo. Nuo to laiko kiekviena versijų šaka dvejus metus gauna aktyvią priežiūrą ir dvejus metus saugumo pataisymus, abiem atvejais iki gruodžio 31 d. Išsamios taisyklės pateiktos skyriuje PHP versijos ir leidimų ciklas.
Ką istorija reiškia saugumui šiandien
Ilga istorija yra stiprybė, nes PHP stabilus ir gerai dokumentuotas. Bet tai ir našta: daugelyje serverių veikia versijos, kurios buvo įdiegtos prieš daugelį metų ir niekada nepakeistos. PHP 5.6 be oficialaus palaikymo yra nuo 2018 m. gruodžio 31 d., PHP 8.0 nuo 2023 m. lapkričio 26 d., PHP 8.1 nuo 2025 m. gruodžio 31 d.
PHP2Shell tai aiškiai parodė. Pasak specializuotos spaudos, paveiktos beveik visos versijos iki pat PHP 5.4. Oficialūs pataisymai nuo 2026 m. spalio 21 d. yra tik 8.2–8.5 šakoms; 7.4, 8.0 ir 8.1 yra tik minimalūs šaltinio kodo atgaliniai perkėlimai (backport). Kas eksploatuoja senesnes versijas, pasekmes ras vadove PHP End of Life: pasenusių versijų rizika.
Kiekvienam serveriui užsirašykite PHP versiją ir datą, kada baigiasi jos palaikymas. Tada netikėtumas virsta planuojamu terminu.
Kaip PHP SOS padeda konkrečiai?
- Rasti palikimą: nustatome, kokios PHP kartos jūsų serveriuose dar veikia, taip pat užmirštose sistemose.
- Įvertinti riziką: parodome, kurios versijos gauna oficialius atnaujinimus ir kur lieka tik pereinamieji sprendimai.
- Planuoti migraciją: per PHP 8.1 ir senesnių versijų migraciją perkeliame programas į palaikomą versiją, prieš perėjimą išbandytas.
- Dokumentuoti: gaunate versijų ir palaikymo pabaigos datų apžvalgą savo planavimui.
Dažni klausimai
Kas sukūrė PHP?
PHP pradžia siejama su Rasmusu Lerdorfu. 1994 m. jis C kalba parašė CGI programų rinkinį, pavadintą Personal Home Page Tools. Nuo 1997 m. Andi Gutmans ir Zeev Suraski iš naujo parašė analizatorių (parser), ir taip atsirado PHP 3.
Ką reiškia santrumpa PHP?
Iš pradžių Personal Home Page. Nuo PHP 3 pavadinimas yra rekursyvi santrumpa: PHP: Hypertext Preprocessor. Taigi santrumpoje yra ji pati.
Kodėl nebuvo PHP 6?
PHP 6 turėjo atnešti išsamų Unicode palaikymą. Pasak PHP vadovo, nuo šio darbo buvo atsisakyta. Kai kurios planuotos funkcijos pasirodė PHP 5.3 ir 5.4, o kita didelė versija vadinosi PHP 7.
Nuo kada yra PHP-FPM ir OPcache?
PHP-FPM kaip atskira SAPI įtrauktas su PHP 5.3.3. OPcache, pasak vadovo, kartu su PHP pateikiamas nuo PHP 5.5.0, o anksčiau versijoms 5.2–5.4 buvo prieinamas per PECL.