Vanhentunut PHP on vanhentunut PHP
”Ei ole mitään syytä, miksi joku hankkisi tietokoneen kotiinsa.”
– Digital Equipment Corporation perustaja Ken Olsen vuonna 1977
”640 kilotavun muistin pitäisi riittää kaikille.”
– Microsoftin perustaja Bill Gates vuonna 1981
Internet suosii näitä lainauksia, vaikka Ken Olsenin virke on irrotettu asiayhteydestään eikä Bill Gates ole koskaan sanonut mitään tällaista. Nämä ovat vain hyviä lainauksia havainnollistamaan, että ajat muuttuvat. Haluamme myöntää sen tai emme, mutta internetin loputtomissa muutosten tuulissa PHP:n vanhentuneet versiot ovat väistämättä jääneet jälkeen ajasta ja kehityksestä.
Kun Rasmus Lerdorf julkaisi 25 vuotta sitten ensimmäisen modernin PHP-version 3.0, internet oli hyvin toisenlainen kuin nyt. Verkkosivuja koskevat vaatimukset olivat vielä vaatimattomat, ja sekä verkkokehitystyökalujen että käyttöjärjestelmien valmiudet suhteellisen pienet. Oli ihan normaalia, että verkkosivusto oli tiukasti sidoksissa käytettyyn ohjelmistoversioon ja pysyi sellaisena internetissä. Kun ohjelmisto oli niin yksinkertainen, sen päivittäminen ei ollut tarpeen eikä usein edes mahdollista.
Vuonna 2024 verkkoa pyörittävien ohjelmistojen tulee olla paljon kyvykkäämpiä, mutta tällä kyvykkyydellä on myös haittapuolensa: ne ovat paljon monimutkaisempia, niissä on enemmän riippuvuuksia ja niiden elinkaari on lyhyempi.
Uusin PHP on vaativampi kuin koskaan ennen
Tämän päivän PHP:n tulee pärjätä kaikkien nykyverkossa käytössä olevien teknologioiden kanssa, ja niitä on paljon enemmän kuin 25 vuotta sitten. Kaiken tämän tuen omatoiminen kehittäminen ei ole käytännöllistä eikä ilmeisesti mahdollistakaan, ja PHP käyttää sitä varten useita eri ohjelmistokappaleita. Zone-alustalle asennettu PHP ja sen moduulisarja vaativat toimiakseen satakunta ohjelmakirjastoa. Eri kuvatiedostomuodot, tekstin koodaukset, salaus- ja pakkausalgoritmit, verkkoprotokollat, varmennusmenetelmät ja tietokannat – näitä kaikkia tukevat kolmansien osapuolien kehittämät ohjelmistot.
Nämä kaikki eivät pysy paikoillaan, vaan kehittyvät jatkuvasti. Mitä enemmän riippuvuuksia jollakin ohjelmistokappaleella on, sitä enemmän se on sidoksissa tiettyyn ajankohtaan ja sitä on vaikeampi tukea pitkäaikaisesti. Jokaiselle ohjelmaversiolle tulee jossain vaiheessa hetki, jolloin kehittäjät sanovat, että X:ää vanhempiin versioihin ei enää kiinnitetä huomiota eikä niihin tehdä tietoturvapäivityksiä vaan on aika vaihtaa uudempaan versioon. Ja jos kehittämäsi ohjelmisto on PHP, jolla on kolminumeroinen määrä riippuvuuksia, näille riippuvuuksille käy näin jatkuvasti. Julkaiset upouuden PHP-version 8.3, ja jo parin vuoden kuluttua joudut tilanteeseen, jossa sinun on tehtävä siihen suuria muutoksia, koska jokin grafiikka- tai salausprotokollaa käyttävä kirjasto on lakannut tukemasta tarvitsemaasi versiota, ja jostain syystä vanhemman version käytön jatkaminen ei ole enää hyväksyttävää.
Tämä on tärkein syy siihen, miksi PHP-projekti on päättänyt, että kunkin version elinkaari on kolme vuotta: kaksi vuotta aktiivista tukea ja yksi vuosi tietoturvakorjauksia. Aktiivinen tuki PHP 8.3:lle, joka julkaistiin kuukausi sitten, jatkuu marraskuuhun 2025 asti, ja tietoturvapäivitykset jatkuvat marraskuuhun 2026 asti. PHP-kehittäjät eivät halua tarjota tukipalveluja yli kahden vuoden ajan. Tämä ei tarkoita, että pidempiaikainen tuki olisi mahdotonta, mutta se on muiden tehtävä. Linux-jakeluiden elinkaari on yleensä hieman yli kolme vuotta, ja jakeluiden on pakko tukea myös sellaisia PHP-versioita, joita itse PHP-projekti ei enää tue. On niitä, jotka tekevät sitä pidempään, mutta yleensä pidempi tuki on maksullista (esim. Ubuntu Expanded Security Maintenance).
Vanhojen PHP-versioiden käyttö merkitsee paljon työtä kaikille
Zonen tapauksessa kaikkien vanhempien PHP-versioiden (tällä hetkellä niitä on 7) tukeminen on työtä, jota joudumme tekemään itse, ja se on tärkeimpiä syitä, miksi käytämme ZoneOS-nimistä Linux-alustaa. Aina silloin tällöin on tarpeen varmistaa, että kaikki Zonen edelleen tukemat PHP-versiot toimivat uudemmalla alustalla ja saavat tärkeät tietoturvakorjaukset. Joka kuukausi uudempiin PHP-versioihin ilmestyy korjauksia, jotka on mahdollisesti integroitava vanhempiin PHP-versioihin. Jokainen uudempi versio jostakin kirjastosta voi rikkoa vanhempien PHP-versioiden toimivuuden, ja sellaiset ongelmat on löydettävä ja ratkaistava. Mitä vanhempi PHP-versio, sitä monimutkaisempi ja aikaa ja resursseja vievämpi työ on.
Kuitenkin tulee aika, jolloin meidän on pakko sanoa: ”No, nyt riittää, tästä lähtien Zone-alustalla ei enää voi käyttää PHP-versioita, jotka ovat vanhempia kuin X.Y.” Tämä hetki voi tulla suhteellisen yllättäen, liittyä tietoturvaan, yhteensopivuuteen tai muihin teknisiin yksityiskohtiin tai yksinkertaisesti siihen, että vanhan version tukemiseen tarvittava työmäärä on kasvanut kohtuuttoman suureksi.
Useimmiten ei tajuta, että vaihtaminen uudempiin ohjelmistoversioihin ei enää ole yhtä suuri ongelma kuin ennen: vaikka kehitys onkin nopeampaa, se tapahtuu paljon pienemmin harppauksin. Verkkokehittäjille tämä tarkoittaa sitä, että menneet ovat ne ajat, jolloin pelkkä sivuston käyttämän PHP-version vaihto oli riittävä syy kirjoittaa koko sivusto uudelleen alusta alkaen. Webin päivittäminen uuteen PHP-versioon ei ole hankalaa edes silloin, kun käytössä on ainutlaatuinen räätälöity ratkaisu, varsinkin jos tekee sen säännöllisesti eikä anna ongelmien kasaantua. Zonen tuottamat työkalut tekevät myös uudempien PHP-versioiden testauksesta vaivattoman. Ota vaan yhteyttä, niin autamme sinua mielellämme.
Muuttuvat ajat eivät välttämättä tarkoita, että ne ovat parempia tai huonompia: ne ovat vain erilaisia, ja niihin on sopeuduttava. Kyllä, verkko-ohjelmien unohtaminen nettiin pidemmäksi aikaa on mutkikkaampi tapaus, mutta jos kiinnittää useammin huomiota pienehköihin päivityksiin, sivuston elinkaari pitenee huomattavasti ja muutokset ovat vähemmän tuskallisia.
Tästä aiheesta olemme myös kertoneet PHP:n vanhojen versioiden käytöstä aiheutuvasta päänsärystä aiemmassa blogikirjoituksessa.