Ga naar inhoud

Upgraden naar PHP 8.0

Guide geschreven door: Brian

Zoals de PHP site aangeeft verdwijnt de PHP support voor alle versies onder PHP 8.0 binnenkort: link

En onze huidige hosting partner Kinsta heeft al aangegeven dat bij 1 Januari alle servers worden omgezet naar PHP 8.0, dit willen we graag voor zijn. Deze taak is dus van groot belang voor Lemone en heel belangrijk.

Wij houden een tabel met hierin de gegevens van al onze website bij, ik heb hier wat extra kolommen toegevoegd (zie einde document) om de voortgang van de upgrades te kunnen monitoren https://baserow.lemone.space/database/74/table/363.

De betreffende site dient compleet te gaan draaien op PHP 8.0, door het upgraden naar de nieuwere versie gaan er al een aantal zaken kapot waarvan we op de hoogte zijn:

  • Roots Sage thema, hier is een fix voor.
  • Andere plugins die wellicht niet PHP 8.0 ready zijn.
  • Deprecated functies binnen de PHP code.

Zorg dat je lokaal op je Mac PHP 8.0 hebt draaien.


Deze stappen zijn nodig per website:

  1. Zorg dat de Lando configuratie ook PHP 8.0 gebruikt voor zijn docker container.
  2. Het updaten van beide composer.json bestanden binnen de WordPress installatie. De composer update houdt in dat:
    • De PHP requirements naar ’>=8.0’ worden gezet in beide composer.json bestanden.
    • De WordPress versie minimaal 5.8 bedraagt.
    • Roots Sage package update, deze wisselt het ‘roots/sage-lib’ package om met onze eigen ‘lemone/sage-lib-php-8’ package waar een PHP 8.0 patch in zit.
    • Deze is uit te voeren door Codepot als Composer Package Registry toe te voegen (een adres waar Composer nu ook zijn pakketjes vandaan kan halen).
    • Onze composer registry toevoegen aan composer kun je doen met dit command (wachtwoord en tokennaam is te vinden in 1password):
    • composer config gitlab-token.codepot.nl *gitlabtoken* *vault password*
    • Dit commando genereert een auth.json bestand waar de gegevens in bewaard worden om te kunnen conecten met onze Codepot Composer Packages. Dit bestand willen we absoluut niet in de repo hebben staan.
    • Voer vervolgens ook dit composer commando uit om de Composer Package Registry van Codepot toe te voegen:
    • composer config repositories.371 composer https://codepot.nl/api/v4/group/371/-/packages/composer/
    • Verwijder het oude ‘roots/sage-lib’ package van de composer.json.
    • Verwijder het package ‘roots/sage-installer’ deze is niet benodigd.
    • Verwijder de composer.lock file in de thema map en site map, omdat er hogere versies vereist worden van sommige pakketjes. Hiermee genereren we een nieuw document die de versies bijhoudt.
    • Voeg gitlab-domains toe:
    • composer config gitlab-domains codepot.nl
    • Voeg vervolgens het nieuwe ‘roots/sage-lib’ package toe maar dan die van ons.
    • composer req lemone/sage-lib:9.0.9-patch
    • Pas hierna de .GitIgnore file aan in de map waar de Composer.json staat en exclude het auth.json bestand van Git (zodat onze gegevens niet in de Repository komen te staan).
    • Draai het commando ‘composer install’, en kijk of er problemen ontstaan tijdens de update naar PHP 8.0.
    • Wanneer er geen problemen ontstaan met composer is dat de eerste stap die afgevinkt kan worden 🎉.
  3. Wanneer de composer bestanden aangepast zijn en de website draait op PHP 8.0 dienen de pagina’s afgegaan te worden om te kijken of er problemen op treden met: PHP functies die inmiddels deprecated zijn of simpelweg niet meer werken.
  4. Bij geen verdere problemen kunnen de bestanden binnen Trellis aangepast gaan worden zodat tijdens een deploy naar de test/live server ook de composer config wordt toegepast.
    • Deze extra code dient toegevoegd te worden aan de YML bestanden: link
    • Ook dient deze code aangepast te worden zoals hier: link (negeer vault bestanden hierin.)
    • Voeg een nieuwe bestand in de map trellis toe en noemm deze “.vault_pass en zet er het wachtwoord in die je van Brian hebt gekregen
    • Decrypt de Trellis vault.yml bestanden in Staging/Production via ‘ansible-vault decrypt group_vars/staging/vault.yml’.
    • Vervolgens voegen we de Codepot Composer Package Registry gegevens toe aan beide Staging/Production vault.yml bestanden, door dit toe te voegen:
    • composer_authentications: { hostname: codepot.nl, username: *gitlabtoken* *vault password* }
    • yml bestand
    • Na dat de extra authenticatie is toegevoegd MOETEN de vault.yml bestanden weer encrypted worden, dit is te doen door ‘ansible-vault encrypt’ te draaien in plaats van ‘decrypt’.
  5. Na de aanpassingen binnen de Trellis/ map kan er gecommit worden naar de branch voor het verdere testen op de Test omgeving. En eventuele controle door collega’s.
  6. Merge request laten testen door collega’s.