PHP 5.6 migratie naar 7.x

Laatst gewijzigd 08-09-2020

Voorgeschiedenis:

Met de migratie van PHP 5.6 naar PHP 7.x zou je je kunnen afvragen waarom er geen PHP 6 tussen zit.
De reden komt vanuit de ontwikkelaars van PHP. In 2005 is PHP begonnen aan de ontwikkeling van PHP 5.6, met als grootste wijziging de ondersteuning van unicode. Als deze versie ooit uit was gebracht zou het nu mogelijk zijn om ook andere tekens dan het latijns te gebruiken in programmatuur.

De complexiteit was echter dermate groot dat slechts enkele ontwikkelaars van PHP dit ook daadwerkelijk volledig begrepen en gebruikten. Omdat het ontwikkelen zo lang duurde is uiteindelijk besloten om functionaliteit die wel goed werkte te behouden en een mooie toevoeging was voor PHP. De implementatie hiervan zat in PHP 5.3 en 5.4. Om verder geen verwarring te veroorzaken in PHP 6 is er daarom voor gekozen om deze release PHP 7 te noemen.

Inleiding:

Binnenkort wordt PHP 5.6 uitgefaseerd op al onze SATservers.
Dit wil zeggen dat je op korte termijn alleen maar gebruik kunt maken van minimaal PHP 7.

Wat is het voordeel van een upgrade naar PHP 7?
Bekende content management systemen zoals Wordpress en Joomla krijgen een behoorlijke performance boost. Het geheugen gebruik neemt met circa 50% af en de processorverbruik wordt verlaagd met 25%.
Bij Joomla kun je rekenen op 50% en bij Wordpress op 200-300% performance winst!
PHP 7 is de meest veilige versie van PHP en ook nog eens de aller snelste!


Waarom moet ik nu meteen upgraden?
Vanaf 1 januari 2017 worden er al geen nieuwe updates meer uitgebracht voor PHP 5.6.
PHP 7.x is al een lange tijd de standaard voor PHP applicaties.
Doordat er geen beveiligingsupdates meer plaats vinden is er een grote kans aanwezig dat websites die op 5.6 gehackt gaan worden.
Om onze servers veilig te houden, hebben we besloten op de PHP 5.6 versie uit te faseren.
Dit wil dus zeggen dat wanneer je website niet klaar is voor 7.0 de website problemen zal krijgen en foutmeldingen kan vertonen.

Roadmap:
Een volledige roadmap van PHP vind je hier. Deze roadmap geeft duidelijkheid over welke versie van PHP niet langer ondersteund wordt en tot wanneer de security updates lopen. Tot en met PHP 5.6. worden op dit moment geen security updates meer gemaakt, waardoor een server mogelijk onveilig is.

Het belang van updaten:
Het is dus heel belangrijk om met nieuwere versies mee te gaan, omdat er veel beveiligingsproblemen in nieuwere versies worden opgelost.

Dit komt de snelheid / stabiliteit en veiligheid ten goede van de server, maar dus ook van je website.
Daarom is het belangrijk om hier in mee te gaan.
PHP updates binnen dezelfde versie (van 5.3 naar 5.4 of van 5.3 naar 5.6 of van 5.4 naar 5.6) zijn minor (kleine) updates.
Wanneer je de display_errors aan hebt staan of de error_reporting in een bestand wegschrijft, zal PHP hiervoor eerst een waarschuwing geven zodra je een functie gebruikt die in nieuwere versies niet meer gebruikt kan worden. Je kan hier dan alvast rekening mee houden door een andere functie te gebruiken.

Van PHP 5.6 naar 7.x is echter een grotere wijziging.
Om je een beetje op weg te helpen geven we hierbij aan wat de belangrijkste punten zijn om rekening mee te houden.

Waar moet ik nog meer rekening mee houden?

Van MySQL naar MySQLi
Dit is een belangrijke wijziging, waar je in PHP 5.6 nog verbinding maakte met MySQL, maak je in PHP 7.x geen gebruik meer van MySQL maar van MySQLi.
Dit wil dus ook zeggen dat wanneer je in je eigen gemaakte code queries doet, je geen verbinding meer moet maken met MySQL, maar met MySQLi.
Hiervoor zou je je code moeten. Sinds PHP 5.5 geeft PHP al een waarschuwing dat de MySQL driver verouderd is, en vanaf PHP 7.0 is de MySQL driver niet meer te gebruiken.

Hoeveel werk is het omzetten van MySQL naar MySQLi in mijn eigen custom code?
Over het algemeen valt het wel mee. Het kost wel wat tijd, maar in de meeste gevallen ben je met ongeveer 2 uurtjes wel klaar.
Het eerste waar je rekening mee moet houden is dat je mysql_query moet vervangen door mysqli_query.
Voor voorbeelden over hoe je mysqli_query moet gebruiken kan je hier kijken..

Wat is het voordeel van MySQLi tegenover MySQL
Het grote voordeel van MySQLi is dat dat de i staat voor improved (verbeterd).
Dit wil zeggen dat MySQLi sneller is, maar ook veiliger dan MySQL.

Wordpress:
Wanneer je Wordpress gebruikt, zal je normaal gesproken weinig tot geen hinder ondervinden van een php upgrade, let wel dat de plugins die je installeert wel overweg moeten kunnen met de nieuwere PHP versie.
Je hebt hiervoor minimaal versie 4.4 of hoger voor nodig. Als je Wordpress versie lager is, kan dit wel problemen geven.

Joomla:
Pas in de configuration.php de public $dbtype = 'mysql'; aan naar public $dbtype = 'mysqli';
Joomla geeft officieel ondersteuning voor php 7 vanaf versie 3.5 of hoger.


Drupal:
Drupal ondersteunt PHP 7 vanaf versie 8 en hoger.


PHP FPM
Op onze oudere servers is er maar 1 PHP versie geïnstalleerd en iedereen moet dezelfde PHP versie gebruiken.
Je kan hierbij dus zelf niet voor de PHP versie kiezen.
Dit komt omdat de PHP versie niet als FPM is ingesteld maar als cgi / fast-cgi.
Op onze nieuwere servers draait de PHP wel als FPM. dit heeft als voordeel dat je de PHP versie makkelijk kan wijzigen en daarnaast is FPM lichter en sneller dan CGI.
Daarnaast is het ook een voordeel dat we meerdere php versies tegelijk kunnen draaien en dat we in de toekomst makkelijk een PHP versie erbij kunnen installeren.
Echter, omdat de PHP modus verandert, moet je hier wel rekening mee houden in je code. Zo zijn er bepaalde codes die niet meer ondersteund worden, denk aan de php_values en de php_flags in de .htaccess. In plaats daarvan kan je een .user.ini aanmaken en daar de waarden in plakken.
Het verschilt per server of je een .user.ini aan moet maken of je het toch in de .htaccess kan zetten.
Wanneer je problemen hebt en een 500 error op je website krijgt, dan weet je dat de php_flags en de php_values niet ondersteund worden.
Mocht je een error 500 hebben, zet dan even de display_errors aan, of log deze in een errors bestand zodat je kan zien wat de fout is.
Je kan dan makkelijk het probleem zien en de 500 error oplossen.

Wil je weten welke wijzigingen er nog meer plaats vinden?
Op de website van php (klik hier) staat precies welke functies er zijn aangepast en welke er zijn vervallen etc.

Was dit artikel nuttig?
Zeker Niet echt!

Vragen over onze dienstverlening?

Onze support is op werkdagen bereikbaar van 9:00 - 17:30.