Aegunud PHP on aegunud PHP
„Ei ole mingit põhjust, miks igal inimesele peaks arvuti kodus olema.“
– Digital Equipment Corp. asutaja Ken Olsen aastal 1977
„640kB mälu on igaühele piisav.“
– Microsofti asutaja Bill Gates aastal 1981
Internet armastab neid tsitaate, kuigi Ken Olseni lause on kontekstist välja rebitud ja Bill Gates pole kunagi midagi sellist öelnud. Need on lihtsalt liiga head tsitaadid illustreerimaks, et ajad muutuvad. Tahame seda enesele tunnistada võid mitte, aga internetis lõputult lõõtsutavates muudatuste tuultes on ajale ja arengule paratamatult jalgu jäänud vananenud PHP versioonid.
Kui Rasmus Lerdorf 25 aastat tagasi esimese tänapäevase PHP versiooni 3.0 avalikuks tegi, oli internet väga teistsugune. Nõudmised veebilehtedele olid veel tagasihoidlikud ning nii veebiarenduse vahendid kui ka opsüsteemid suhteliselt väikeste võimalustega. Oli täiesti normaalne, et veebileht oli jäigalt seotud kasutatava tarkvara versiooniga ning sellisena see internetti ka jäi. Kuna tarkvara oli enamasti nii lihtne, polnud selle uuendamine ei vajalik ega tihti isegi võimalik.
Aastal 2024 peab veebi käitav tarkvara olema väga palju võimekam, kuid see võimekus tuleb oma varjukülgedega – see on ka palju keerukam, rohkemate sõltuvustega ning selle elutsükkel on palju lühem.
Uusim PHP on nõudlikum kui kunagi varem
Tänapäevane PHP peab toime tulema kõigi kaasaegses veebis kasutatavate tehnoloogiatega ning neid on oluliselt rohkem kui 25 aastat tagasi. Kõige selle toe ise arendamine ei ole ei mõttekas ega ilmselt võimalikki ning PHP kasutab selleks paljude erinevate tarkvaratükkide abi. Zone platvormi paigaldatud PHP ja selle moodulite komplekt vajab oma tööks ligi sadat teeki. Erinevad pildiformaadid, tekstikodeeringud, krüpto- ja pakkimisalgoritmid, võrguprotokollid, autentimismeetodid ja andmebaasid – kõige selle toetamiseks kasutatakse kolmandate osapoolte arendatavat tarkvara.
Kõik see ei seisa paigal, vaid on samuti pidevas arengus. Mida rohkem on ühel tarkvaratükil sõltuvusi, seda rohkem on see seotud konkreetse ajahetkega ning seda keerulisem on selle toetamine pikema aja vältel. Iga tarkvaraversioonil saabub ühel hetkel moment, kus arendajad ütlevad, et versioonist X vanemad enam meie tähelepanu ja turvauuendusi ei saa ning on aeg kolida uuema versiooni peale. Ning kui sinu arendatavaks tarkvaraks on PHP, millel on kolmekohaline arv sõltuvusi, juhtub nende sõltuvustega seda pidevalt. Sa annad maailmale vileuue PHP versiooni 8.3 ning juba paari aasta pärast oled olukorras, kus peaks sellega ette võtma olulisi muudatusi, sest mõni graafika- või krüptoprotokollide teek on toe vajalikule versioonile lõpetanud ning vanema versiooni edasi kasutamine pole mingil põhjusel enam aktsepteeritav.
See on peamine põhjus, miks PHP projekt on otsustanud, et iga versiooni elueaks on kolm aastat – kaks aastat aktiivset tuge ning aasta veel turvaparandusi. Mõni kuu tagasi maailmale tutvustatud PHP 8.3 aktiivne tugi kestab 2025. aasta novembrini ning turvauuenduste tugi 2026. aasta novembrini. Rohkem kui kaks aastat järelaitamistööd PHP arendajad teha ei soovi. See ei tähenda, et kauem kestev tugi üldse võimalik poleks, kuid seda peavad tegema teised. Linuxi distributsioonide eluiga on tüüpiliselt natuke pikem kui 3 aastat ja distributsioonid on sunnitud toetama ka neid PHP versioone, mida PHP projekt ise enam ei toeta. On neid, kes teevad seda kauem, kuid tavaliselt maksab pikem tugi juba raha (nt Ubuntu Expanded Security Maintenance).
Vanade PHP versioonide kasutamine tähendab roppu tööd kõigile
Zone puhul on kõigi vanemate PHP versioonide (hetkel on neid 7) toetamine töö, mida peame tegema meie ise ning see on üks olulistest põhjustest miks me kasutame oma ZoneOS nimelist Linuxi platvormi. Iga natukese aja tagant tuleb tegeleda sellega, et kõik Zone poolt veel toetatud PHP versioonid töötaks uuemal platvormil ning saaks olulisi turvaparandusi. Iga kuu ilmub uuematesse PHP versioonidesse parandusi, mida on potentsiaalselt vaja vanematesse PHP versioonidesse integreerida. Iga uuem versioon mingist teegist võib vanemate PHP-de funktsionaalsuse katki teha, need probleemid on vaja avastada ja parandada. Mida vanema PHP versiooniga on tegu, seda keerulisem ning aega ja ressursse nõudvam see töö on.
Kuid igal juhul saabub kunagi hetk, kus me oleme sunnitud ütlema – “Nüüd on kõik, sellest hetkest Zone platvormis enam vanemaid PHP versioone kui X.Y kasutada ei saa”. See hetk võib saabuda suhteliselt ootamatult, olla seotud turvalisusega, ühilduvusega vms tehniliste detailidega või ka lihtsalt sellega, et vana versiooni toetamiseks vajalik töö hulk on kasvanud ebamõistlikult suureks.
Tegelikult ei aduta tihti, et uuematele tarkvaraversioonidele üle minemine pole ka enam nii suur probleem kui varem – kuigi areng on kiirem, toimub see ka palju väiksemate hüpetega. Veebiarendajatele tähendab see seda, et möödas on ajad, kus veebilehe PHP versiooni vahetus iseenesest oli piisav põhjus võtta ette kogu lehe nullist uuesti kirjutamine. Isegi unikaalse rätsepalahenduse puhul pole veebi uuele PHP versioonile üle viimine kaelamurdev, eriti kui seda teha regulaarselt ja mitte lasta probleemidel kuhjuda. Zone loodud tööriistade abil on ka uuemate PHP versioonide testimine valutu.
Aegade muutumine ei tähenda, et need oleks tingimata paremad või halvemad – need on lihtsalt teistsugused ja sellega tuleb kohaneda. Jah, veebitarkvara pikemaks ajaks internetti unustamine on keerulisem, kuid sagedasem tähelepanu pööramine väiksematele uuendustele muudab teie veebi eluea oluliselt pikemaks ning muutused valutumaks.
Teemaga haakuvalt oleme PHP vanade versioonide kasutamisega kaasnevast peavalust rääkinud ka ühes meie varasemas blogipostituses.
Lisaks tasub kindlasti pilk peale visata meie abikeskkonnas asuvale põhjalikule juhendile, mis aitab sul selgusele jõuda, kuidas näha ja uuendada aegunud PHP versioone.