Na kratko: Zgodovina PHP se začne leta 1994 z Rasmusom Lerdorfom, ki je programe CGI, napisane v C, za svojo zasebno spletno stran poimenoval „Personal Home Page Tools“. Leta 1998 je izšel PHP 3, leta 2000 PHP 4 z Zend Engine, 2004 PHP 5, 2015 PHP 7 in 2020 PHP 8. Danes vsako leto novembra izide nova različica, ki jo vzdržujejo štiri leta.
Kako je nastal PHP: Personal Home Page Tools (1994 do 1997)
Po priročniku PHP je Rasmus Lerdorf leta 1994 napisal vrsto programov CGI v jeziku C. Prvotno naj bi samo beležili obiske njegovega spletnega življenjepisa. Zbirko je poimenoval „Personal Home Page Tools“ in izvorno kodo objavil junija 1995. Tako so lahko orodja uporabljali in izboljševali tudi drugi.
Septembra 1995 je Lerdorf orodja razširil in jih začasno poimenoval „FI“ (Forms Interpreter). Oktobra 1995 je sledila popolna predelava, spet pod imenom PHP. Aprila 1996 je obe imeni združil v PHP/FI. Ta različica je junija 1996 dobila status različice 2.0 in novembra 1997 zapustila fazo beta.
Že ta zgodnja faza zaznamuje PHP do danes: jezik, ki je nastal iz praktične potrebe, hitro prinaša rezultate in ga odprta skupnost razvija naprej.
PHP 3 in Zend Engine (1997 do 2004)
Leta 1997 sta Andi Gutmans in Zeev Suraski iz Tel Aviva začela na novo pisati razčlenjevalnik (parser), torej del, ki prebere in razčleni izvorno kodo. Skupaj z Lerdorfom je nastal nov jezik, ki se je imenoval samo še „PHP“. Ime je postalo rekurzivna kratica „PHP: Hypertext Preprocessor“. PHP 3.0 je izšel junija 1998 kot naslednik PHP/FI 2.0. Pomembni sta bili predvsem dobra razširljivost in prva podpora za objektno usmerjeno programiranje.
Nato sta Gutmans in Suraski jedro znova napisala. Rezultat je bil Zend Engine, poimenovan po njunih imenih Zeev in Andi. Predstavljen je bil sredi leta 1999. PHP 4.0 je izšel maja 2000 in prinesel boljšo zmogljivost, seje HTTP in medpomnjenje izpisa.
Julija 2004 je sledil PHP 5 z Zend Engine 2.0 in novim objektnim modelom. Serija 5 je ostala dolgo v rabi in rasla z vsako podrazličico. S PHP 5.3.3 je kot samostojen način delovanja prišel FastCGI Process Manager (FPM), s PHP 5.5.0 je predpomnilnik bajtne kode OPcache postal del dobavljenega obsega.
Odpadli PHP 6 in skok na PHP 7 (2005 do 2019)
PHP 6 naj bi prinesel poglobljeno podporo za Unicode, torej enotno obdelavo vseh pisnih znakov. Po priročniku so to delo opustili. Nekatere načrtovane funkcije so se preselile v PHP 5.3 (imenski prostori) in PHP 5.4 (traiti in kratek zapis polj []). Naslednja velika različica je zato dobila številko 7.
PHP 7.0 je izšel 3. decembra 2015 z Zend Engine 3.0. Podlaga je bil projekt PHPNG, predelava jedra pod vodstvom Dmitryja Stogova. Pripadajoči RFC, formalni predlog spremembe, je navajal pridobitev zmogljivosti od 20 do 110 odstotkov v resničnih aplikacijah, kot sta WordPress in Drupal. Novosti so bile med drugim operator združevanja z ničlo ?? in anonimni razredi.
<?php
// Od PHP 7.0: privzeta vrednost brez verige isset()
$sprache = $_GET['lang'] ?? 'de';
Serija 7 se je končala s PHP 7.4. Njegova zadnja različica, 7.4.33, je izšla 3. novembra 2022; po php.net se je podpora končala 28. novembra 2022.
PHP 8 in letni ritem (2020 do danes)
PHP 8.0 je izšel 26. novembra 2020 z imenovanimi argumenti, unijskimi tipi, atributi, operatorjem nullsafe ?->, izrazi match in prevajalnikom JIT. Od takrat vsako leto izide nova podrazličica. Kaj je prinesla posamezna različica, opisuje pregled PHP 8.0 do 8.5.
| Različica | Prva objava | Ključne točke |
|---|---|---|
| PHP 3.0 | junij 1998 | nov razčlenjevalnik, ime „PHP: Hypertext Preprocessor“ |
| PHP 4.0 | maj 2000 | Zend Engine, seje, medpomnjenje izpisa |
| PHP 5.0 | julij 2004 | Zend Engine 2.0, nov objektni model |
| PHP 7.0 | 3. december 2015 | Zend Engine 3.0, občutno hitrejši |
| PHP 8.0 | 26. november 2020 | JIT, atributi, unijski tipi |
| PHP 8.1 | 25. november 2021 | enumi, fibri, lastnosti readonly |
| PHP 8.2 | 8. december 2022 | razredi readonly, tipi DNF |
| PHP 8.3 | 23. november 2023 | tipizirane konstante razredov |
| PHP 8.4 | 21. november 2024 | property hooks, asimetrična vidnost |
| PHP 8.5 | 20. november 2025 | operator pipe, razširitev URI |
Leta 2024 je projekt PHP glasoval o novem ciklu izdaj. Od takrat vsaka veja različic prejema dve leti aktivne podpore in dve leti varnostnih popravkov, vsakič do 31. decembra. Pravila v podrobnostih so na strani Različice PHP in cikel izdaj.
Kaj zgodovina pomeni za današnjo varnost
Dolga zgodovina je prednost, ker je PHP stabilen in dobro dokumentiran. Je pa tudi breme: na številnih strežnikih tečejo različice, ki so bile pred leti postavljene in nikoli zamenjane. PHP 5.6 je od 31. decembra 2018 brez uradne podpore, PHP 8.0 od 26. novembra 2023, PHP 8.1 od 31. decembra 2025.
PHP2Shell je to naredil vidno. Po strokovnem tisku so prizadete skoraj vse različice vse do PHP 5.4. Uradni popravki obstajajo od 21. oktobra 2026 samo za veje od 8.2 do 8.5; za 7.4, 8.0 in 8.1 obstajajo le minimalni backporti izvorne kode. Kdor upravlja starejše različice, najde posledice v vodniku PHP End of Life: tveganja zastarelih različic.
Za vsak strežnik zapišite različico PHP in datum, ko se njena podpora konča. Tako iz presenečenja nastane predvidljiv rok.
Kako PHP SOS pomaga konkretno?
- Iskanje starih bremen: ugotovimo, katere generacije PHP še tečejo na vaših strežnikih, tudi na pozabljenih sistemih.
- Ocena tveganja: pokažemo, katere različice prejemajo uradne posodobitve in kje ostanejo samo prehodne rešitve.
- Načrtovanje migracije: z migracijo s PHP 8.1 in starejših aplikacije prenesemo na podprto različico, preizkušeno pred prehodom.
- Dokumentiranje: prejmete pregled z različicami in datumi konca podpore za vaše načrtovanje.
Pogosta vprašanja
Kdo je izumil PHP?
PHP izvira od Rasmusa Lerdorfa. Leta 1994 je napisal zbirko programov CGI v jeziku C, ki jo je poimenoval Personal Home Page Tools. Od leta 1997 sta Andi Gutmans in Zeev Suraski na novo napisala razčlenjevalnik, iz česar je nastal PHP 3.
Kaj pomeni kratica PHP?
Prvotno Personal Home Page. Od PHP 3 je ime rekurzivna kratica: PHP: Hypertext Preprocessor. Kratica torej vsebuje samo sebe.
Zakaj ni bilo PHP 6?
PHP 6 naj bi prinesel poglobljeno podporo za Unicode. Po priročniku PHP so to delo opustili. Nekatere načrtovane funkcije so prišle v PHP 5.3 in 5.4, naslednja velika različica pa se je imenovala PHP 7.
Od kdaj obstajata PHP-FPM in OPcache?
PHP-FPM je bil v PHP 5.3.3 sprejet kot samostojen SAPI. OPcache je po priročniku od PHP 5.5.0 del dobavljenega obsega, prej pa je bil za različice od 5.2 do 5.4 na voljo prek PECL.