Update jouw PHP naar versie 7.2

12 september 2018 - Bas van der Weijden

Leestijd: 8 minuten

De afgelopen tijd zijn wij druk geweest met de implementatie van PHP 7.2 in al onze webhostingpakketten. In december 2018 stopt PHP namelijk met de support voor oudere versies als 5.6 en 7.0. Deze PHP-varianten zijn vanaf dat moment end-of-life en worden niet meer voorzien van veiligheidsupdates, waardoor ze niet veilig meer zijn om te gebruiken voor jouw website(s). Daarnaast zijn deze oudere versies een stuk langzamer en minder effectief dan versie 7.2. Tijd dus om jouw oudere PHP-installatie te updaten.


Wat is PHP eigenlijk?

PHP (Hypertext PreProgramming) is een laagdrempelige scripttaal waar meer dan 80% van alle websites gebruik van maakt. CMS’en zoals WordPress en Drupal gebruiken PHP om interne functies te draaien en database-informatie te verwerken aan de hand van input van de gebruiker. PHP vertaalt daarvoor gegevens van de database in HTML en andersom. Denk bijvoorbeeld aan het aanmaken van gebruikersnamen en wachtwoorden, het controleren van gegevens in de database, of het aanmaken van fotogalerijen. Bij al deze opties komt PHP om de hoek kijken. PHP wordt direct op de server geïnstalleerd en in het geval van webhostingpakketten beheerd door een hostingprovider zoals bijvoorbeeld TransIP. Net als andere software wordt PHP continu doorontwikkeld en zijn er jaarlijks meerdere optimalisatie-, functie- en veiligheidsupdates.


Snelheidswinst door update

PHP is inmiddels bij versie 7.2. Waar versie 7.0 zorgde voor een enorme snelheidswinst (ruim 2 keer zo snel als versie 5.x) kan je versie 7.2 zien als een grote investering in betere veiligheid. Toch is 7.2 ook nog zo’n 15 tot 20 procent sneller dan zijn voorganger.

snelheidswinst in WordPress

Het updaten van PHP heeft een enorme snelheidswinst in WordPress tot gevolg. Bron: kinsta.com.


Meer veiligheid door andere hashingmethode

Om de veiligheid te verbeteren, maakt versie 7.2 gebruik van een wachtwoordhashing-methode genaamd Argon2. Wachtwoorden die door gebruikers van jouw website worden ingevoerd, worden gehashed voordat ze opgeslagen worden in de database. Mocht er een datalek plaatsvinden, dan is alleen het gehashte wachtwoord uitgelekt. Het voordeel van Argon2 ten opzichte van de voorganger Bcrypt is dat het veel moeilijker te ‘bruteforcen’ is door slim gebruik van het algoritme. Naast tijd vraagt Argon2 namelijk ook om een gespecificeerde hoeveelheid geheugen om het wachtwoord te ontcijferen en het is mogelijk om in te stellen hoeveel parallelle threads er tegelijk kunnen worden gebruikt. Door dit aantal te beperken is de kans op het kraken van het gehashte wachtwoord een stuk kleiner. Dit vergroot de veiligheid, omdat het inzetten van krachtige computerapparatuur om het gehashte wachtwoord te kraken in dit geval niet meer werkt door de geheugenbeperking.


SSL maakt plaats voor TLS

In PHP 7.2 is gekozen om de benaming SSL voor een versleutelde verbinding te laten vallen. TLS is de nieuwe standaardnaamgeving voor deze functionaliteit binnen PHP 7.2. Vanaf deze versie van PHP is TLS 1.0 niet meer te gebruiken. Dit protocol (uit 1999) heeft sinds 2006 al een opvolger in TLS 1.1 en sinds 2008 is 1.2 al in gebruik.


Naast veiligheid ook workflow-verbeteringen

Een andere enorme verbetering is dat de zogenaamde argument type declarations, ook wel type hints genoemd, een sprong voorwaarts hebben gemaakt. Sinds PHP 5 is deze functionaliteit ingebouwd en zorgt het ervoor dat een functie kan specificeren welk type argument wordt verwacht. Hierdoor is het mogelijk om aan te geven welk soort antwoord er moet komen. Stel je hebt de functiegroep koken. Het enige dat er dan geaccepteerd mag worden zijn objecten uit de klasse recepten. Voldoet het argument niet aan de verwachtingen dan gaf PHP een foutmelding. In versie 7.2 kan ook een object datatype worden teruggegeven. Het is dus vanaf nu mogelijk om in het bovenstaande voorbeeld het object leesboek terug te krijgen.

Verder is het mogelijk gemaakt om een typebepaling achterwege te laten in subclasses in versie 7.2. Tot voor kort zorgde dit voor problemen, maar nu kan je dus classes updaten om type hints te gebruiken zonder dat alle subclasses moeten worden aangepast.

Tot slot is het nu ook mogelijk is om vanaf versie 7.2 gebruik te maken van trailing comma’s in alle soorten lijsten. Dit zorgt ervoor dat jouw diffjes wat schoner blijven. Dit was altijd al mogelijk in arrays, maar om een consistente gebruikerservaring te creëren is dit uitgebreid naar onder andere grouped namespaces, function/method arguments en class member lists.


Wat staat er in de toekomst te gebeuren?

PHP krijgt elk jaar een versie-update. Voor 13 december dit jaar staat 7.3 alweer in de planning. Deze versie is ondertussen bij beta 3. Elk jaar valt er ook een versie af die vanaf dan niet meer met veiligheidsupdates wordt ondersteund. Eind 2018 zijn dus 5.6 en 7.0 end-of-life en eind 2019 is het de beurt aan versie 7.1 om van het toneel te verdwijnen. Deze versie zal dus te zijner tijd geüpdatet moeten worden.

timeline

PHP heeft een duidelijke tijdlijn op de website staan.


JSON-foutmeldingen een stuk duidelijker

Een van de functies waar veel naar uitgekeken wordt binnen PHP 7.3 is een nieuwe manier waarop JSON-foutmeldingen worden afgehandeld. Op dit moment geeft jsondecode() een nullbij een fout. Null kan echter ook een geldig antwoord zijn. Vanaf 7.3 geeft json_decode() de foutmelding FALSE wat verwarring in de toekomst tegen moet gaan.

In PHP 7.3 worden ook de Heredoc -en Nowdoc-syntax aangepast. Deze syntax wordt gebruikt om een groot blok tekst weer te geven dat niet vertaald hoeft te worden door PHP. De opbouw van de code is daarnaast ook meer in lijn met andere regels in het PHP-bestand, waardoor het beter leesbaar wordt.

Ook krijgt de eerder genoemde trailing comma meer functionaliteit. Het is vanaf versie 7.3 bijvoorbeeld ook bruikbaar in functieoproepen.


Waarom is er eigenlijk nooit een PHP 6 uitgebracht?

Versie 5.6 en versie 7.0 zullen vanaf december 2018 dus niet meer worden ondersteund. Wat is er dan met versie 6 gebeurd? PHP 6 is wel jarenlang in ontwikkeling geweest. In 2005 werd al begonnen met de ontwikkeling van dit versienummer. In 2010 werd wat betreft deze ontwikkeling de handdoek in de ring gegooid. Er zou support komen voor Unicode/UTF8, maar dit kwam in die tijd niet van de grond. Omdat het project zoveel vertraging opliep, kreeg de naam PHP 6 een nogal nare bijsmaak. Uiteindelijk is, zoals met alle keuzes binnen PHP, door de community gestemd of PHP 6 of 7 uitgebracht moest worden. De meerderheid koos op dat moment voor 7 en zo werd versie 6 dus overgeslagen. Ook omdat alle documentatie rondom PHP 6 al verouderd was en de ontwikkelaars graag verwarring wilde voorkomen. Alle nieuwigheden die voor versie 6 waren ontwikkeld zijn uiteindelijk in versie 5.6 en 7.0 beland.


Is jouw build al klaar voor PHP 7.2?

Sinds 15 juli leveren wij onze webhostingpakketten standaard op met PHP 7.2. Heb je voor die datum een webhostingpakket bij ons afgesloten, dan kan het zo zijn dat jouw website nog op een oudere versie van PHP draait. In dat geval is er een uitgebreide handleiding te vinden in de Knowledge Base over hoe je jouw installatie updatet.


Check compatibiliteit voordat je updatet

Check voordat je updatet wel goed of jouw installatie klaar is voor PHP 7.2. De nieuwste softwareversies van Drupal, Joomla en WordPress zijn sowieso compatible. Draai je een ander systeem of een oudere versie van een van deze CMS’en, check dan de compatibiliteit van jouw software met PHP 7.2 voordat je de update uitvoert. Dit om te voorkomen dat jouw website straks niet meer naar behoren werkt.

Meer veiligheid, meer snelheid en een up-to-date website. Dat krijg je als je nu jouw PHP updatet naar versie 7.2. Pas nu jouw PHP-versie aan in het controlepaneel.


Bas van der WeijdenBas van der Weijden Schrijft als tech-copywriter artikelen over diverse onderwerpen die over VPS, infrastructuur en security gaan. Fanatiek fotograaf in zijn vrije tijd en is gek van gamen en dan vooral op Nintendo-consoles.

Deel dit verhaal

Reacties voor het blog zijn uitgeschakeld

Disqus reacties zijn niet beschikbaar omdat je Marketing-cookies hebt uitgeschakeld. Wil je toch reageren op het blog? Zet dan de marketing-cookies aan in jouw privacy instellingen.