Update van jouw website of webapplicatie naar PHP 8

Als je een website of webapplicatie hebt gebouwd met PHP, is de kans groot dat deze is ontwikkeld voor PHP 7 of een oudere versie. Ondanks dat PHP 8 sinds 2020 beschikbaar is, draait meer dan 70% van alle PHP-sites nog steeds op PHP 7 of zelfs eerdere versies. Misschien behoort die van jou ook tot die groep?

Tijd om actie te ondernemen!

Hoewel het misschien niet de meest opwindende taak is, is het verstandig om tijdig actie te ondernemen. Veel hosting­bedrijven kondigen updates naar PHP 8 weliswaar aan, maar voeren deze vaak automatisch door zonder dat je er invloed op hebt. Dus van de ene op de andere dag kan jouw website of webapplicatie door deze update opeens niet meer functioneren.

De voordelen van PHP 8!

PHP 8PHP 8 biedt vele voordelen. Het is sneller, veiliger en een stuk zuiniger met geheugen. Maar er zijn ook gevolgen voor jouw website of webapplicatie, doordat bepaalde functies zijn verdwenen of net iets anders werken. Lees alles over de wijzigingen in PHP 8.

Drupal, Wordpress of ander een CMS/framework?

Heb je een Wordpress of Drupal website, of maak je gebruik van een ander CMS of framework? Zorg er dan voor dat je de laatste versie hebt geïnstalleerd en update alle plugins/modules en thema's. Zijn ze nog niet geschikt voor PHP 8, overweeg dan om ze te verwijderen of een vervanging te zoeken die wel up-to-date is.

Elk systeem vereist een andere aanpak. Hieronder beschrijf ik hoe je te werk kan gaan indien je geen CMS of framework hebt gebruikt.

Hoe weet ik of mijn website of webapplicatie goed werkt met PHP 8?

Er zijn verschillende methodes om dit te achterhalen, maar het is belangrijk om eerst te begrijpen hoe je website of webapplicatie eigenlijk zou moeten functioneren.

Stap 1: In kaart brengen van je website of webapplicatie

Voordat je begint, is het essentieel om te begrijpen welke functionaliteiten je website of webapplicatie heeft en hoe deze zouden moeten werken. Als je een eenvoudige website hebt met bijvoorbeeld alleen een contactformulier, is dit proces eenvoudiger dan voor een complexe webapplicatie. In het laatste geval is het raadzaam om alle functionaliteiten op papier te zetten, inclusief eventuele uitzonderingen. Dit helpt niet alleen bij het updaten naar PHP 8, maar ook bij het communiceren met ontwikkelaars, mocht je hun hulp nodig hebben.

Stap 2: Omzetten PHP-versie bij je hostingprovider

De eerste en meest directe methode is het omzetten van de PHP-versie bij je hostingprovider. Let op: Wees voorzichtig en doe dit alleen als het acceptabel is als je website of webapplicatie tijdelijk offline gaat! Als er problemen optreden met PHP 8, kan je website of webapplicatie mogelijk niet meer (correct) functioneren. Gelukkig kan je altijd terugkeren naar de vorige PHP-versie, dus het is dan slechts een tijdelijke maatregel. Is het belangrijk dat je website of webapplicatie te allen tijde beschikbaar blijft, ga dan hieronder verder met Stap 3.

Omzetten PHP-versie bij DirectAdminJe kan toegang krijgen tot de beheeromgeving van je hosting via de gegevens die je van je hostingprovider hebt ontvangen. Meestal zijn er twee verschillende beheeromgevingen: één voor je hostingaccount zelf, waar je administratieve taken kan uitvoeren zoals het aanvragen van domeinnamen en het bekijken van facturen, en één voor je website, waar je specifieke instellingen kan wijzigen zoals mailboxen instellen en extra FTP-accounts maken. Populaire beheeromgevingen zijn DirectAdmin en cPanel.

Ga op zoek naar de instelling PHP of PHP-versie.
- Bij DirectAdmin vind je deze bijvoorbeeld onder 'Extra features' > 'Select PHP version'.
- Bij cPanel vind je de optie direct onder 'Select PHP version'.
Selecteer de gewenste PHP-versie, bij voorkeur de nieuwste beschikbare 8.x versie (bijvoorbeeld 8.3). Ga naar je website of webapplicatie en controleer of alle in stap 1 beschreven functionaliteiten goed werken.

Werkt alles naar behoren? Fantastisch! Met een beetje geluk werkt alles direct goed met PHP 8 en ben je klaar!
Werkt het niet zoals verwacht? Helaas, het valt vaak tegen! Werkt je website of webapplicatie niet meer goed, dan moet je echt aan de slag! Voordat je verder gaat, zet je de PHP-versie terug naar de oudere 7.x versie die je eerder had.

Aan de slag om je website of webapplicatie lokaal te draaien

Als je website niet goed werkt op PHP 8, of als je liever niet live test, moeten we achterhalen waarom het niet goed werkt.

Stap 3: Draai je website of webapplicatie lokaal

WampJe website of webapplicatie draait nu online, maar om alles rustig te testen en problemen op te kunnen lossen moeten we deze lokaal (op je eigen laptop/PC) gaan draaien. Dat kan op verschillende manieren, met uiteenlopende voor- en nadelen. Twee veelgebruikte methodes:

Ik ga in de volgende stappen uit van een lokale omgeving met Wamp. Als je dit nog niet hebt geïnstalleerd, volg dan de instructies via de bovenstaande (installatie) link.

Stap 3.1. De database

Database exporteren via phpMyAdminMaak je gebruik van een database, maak dan een export. In de beheeromgeving van je website vind je vaak een link naar je phpMyAdmin omgeving, waar je je database kan beheren en exporteren. Log in met de gegevens die je van je hosting hebt gekregen. Aan de linkerkant vind je een lijst met al je databases; waarschijnlijk is dit er maar eentje. Klik op die database, zodat alle tabellen aan de rechterkant verschijnen. Dit zijn alle tabellen van je database die we willen exporteren. Kies bovenin in het menu voor 'Exporteren'. Standaard kies je voor 'Snel' en laat je de indeling op 'SQL' staan en klik je op 'Exporteren'. Gefeliciteerd! Je browser downloadt nu je hele database in één bestand. Deze hebben we straks weer nodig.

Stap 3.2. Bestanden

Nu moeten we alle bestanden van je website of webapplicatie downloaden via FTP, met behulp van een programma zoals Filezilla. Hiermee maak je verbinding met je website en krijg je toegang tot alle bestanden.
Vul de host (vaak gewoon jouwwebsite.nl) en de juiste gebruikersnaam en wachtwoord in (die je als het goed is hebt gekregen van je hosting). Laat de poort leeg en kies voor 'Quickconnect' (in Filezilla). Soms krijg je de melding 'Unknown certificate', maar geen zorgen, klik op 'Ok' of 'Accepteren' en je bent binnen.
Zoek aan de rechterkant naar de map waar je website zich bevindt (meestal 'public_html'). Zie je het bestand 'index.php' dan zit je meestal goed.
Aan de linkerkant zie je alle mappen van jouw eigen computer. Zoek naar een geschikte plek en maak een map aan met de naam van jouw website of webapplicatie. In die map zetten we de bestanden. Open de map die je net (links) hebt aangemaakt en selecteer vervolgens aan de rechterkant alle mappen en bestanden. Klik in Filezilla met je rechtermuisknop op de geselecteerde bestanden en kies 'Download'.

Stap 3.3. PHP-versie Wamp instellen/controleren
PHP-versie instellen in WAMP

Ik ga ervan uit dat je bij Stap 3 Wamp hebt geïnstalleerd en deze goed werkt.

Klik met je linkermuisknop op het WAMP-icoontje in je taakbalk rechtsonderin. Er verschijnen verschillende opties, waaronder 'PHP'. Controleer welke versie draait bij 'Version' en kies voor nu dezelfde PHP-versie als nu op je hosting draait; PHP 7.x (of nog ouder) dus. We willen namelijk eerst zorgen dat je PHP-site lokaal goed draait voordat we aanpassingen voor PHP 8 gaan maken.

Stap 3.4. Database importeren

Je hebt in Stap 3.1 de database gedownload. Nu gaan we deze importeren. Ga in je browser naar http://localhost/phpmyadmin. Standaard kan je inloggen met de gebruikersnaam 'admin' en het wachtwoordveld leeg laten. Je ziet nu de phpMyAdmin-omgeving, maar lokaal op je eigen computer. Klik linksboven op 'Nieuw' of ga naar de tab 'Databases' en maak een nieuwe database aan met een herkenbare naam, bijv. 'jouwwebsite'. Kies bij de collatie voor 'utf8mb3_general_ci'. Na het aanmaken van de database ga je naar 'Importeren' en kies je het in Stap 3.1 geëxporteerde databasebestand (.sql) om te importeren.

Stap 3.5. Virtualhost aanmaken

De volgende stap is het aanmaken van een zogenaamde Virtualhost. We willen je website of webapplicatie namelijk kunnen bezoeken via je browser, en via een Virtualhost kan je één of meerdere PHP-sites op je eigen computer draaien.
Dit kan via Wamp (klik met links op het Wamp-icoontje rechtsonderin je taakbalk in Windows), of (zoals ik het liever zelf doe) open het volgende bestand in een tekst-editor zoals bijv. Notepad++ of eigen tekst-editor naar keuze:

C:\wamp\bin\apache\apache2.4.54.2\conf\extra\httpd-vhosts.conf

Zorg ervoor dat je de locatie van jouw Apache-versie of Wamp gebruikt als deze anders is.

Voeg onderaan in het httpd-vhosts.conf bestand de volgende regels toe, waarbij je de ServerName vervangt door de naam van jouw website of webapplicatie (laat .localhost.test staan). Verder pas je de DocumentRoot en Directory aan naar de locatie waar je alle bestanden in Stap 3.2 hebt geplaatst.

<VirtualHost *:80> ServerName jouw-website.localhost.test DocumentRoot "c:/websites/jouw-website" <Directory "c:/websites/jouw-website/"> Options +Indexes +Includes +FollowSymLinks +MultiViews AllowOverride All Require local </Directory> </VirtualHost>

Herstart Wamp via het icoontje rechtsonderin door te kiezen voor 'Restart all services' om de wijzigingen in het Virtualhost-bestand door te voeren.

Stap 3.6. Aanpassen hosts-bestand

Om ervoor te zorgen dat je browser begrijpt wat te doen wanneer je naar jouw-websitesite.localhost.test gaat, moeten we nog een laatste wijziging aanbrengen. Dit doen we in het hosts-bestand, een systeembestand van Windows.
Je vindt het hosts-bestand op de volgende locatie:

C:\Windows\System32\drivers\etc\hosts

Voeg in dit bestand onderaan de volgende regel toe en vervang 'jouw-website' met dezelfde naam als die je hierboven bij de Virtualhost hebt gebruikt.

127.0.0.1 jouw-website.localhost.test

Nou begint de fun! Open je browser en ga naar 'http://jouw-website.localhost.test'.

Stap 4. Werkend krijgen van je website of webapplicatie met PHP 7

Wacht even! PHP 7? Waarom gebruiken we PHP 7 als we toch van plan zijn om te upgraden naar PHP 8?
Inderdaad, ons doel is om te upgraden naar PHP 8. Maar voordat we daarheen gaan, moeten we er eerst voor zorgen dat alles lokaal werkt met PHP 7.

PhpStorm

PhpStorm Wil je het jezelf makkelijker maken, gebruik dan een goede PHP-editor, of nog beter, een PHP IDE. Terwijl een PHP-editor (zoals het eerder genoemde Notepad++) handig is voor het bewerken van eenvoudige PHP-bestanden, biedt een PHP IDE uitgebreidere mogelijkheden die van pas kunnen komen bij de upgrade van jouw PHP-site naar PHP 8. Zelf gebruik ik de populaire PHP IDE PhpStorm.

Hoewel PhpStorm niet gratis is, kun je het wel 30 dagen gratis uitproberen. Dat is genoeg tijd om jouw PHP-site onder handen te nemen!

Door in PhpStorm aan te geven welke PHP-versie je website gebruikt, krijg je inzicht in mogelijke problemen die kunnen optreden met je PHP-code. Hiermee kan je al een hoop problemen opsporen en oplossen!

Stap 4.1. PhpStorm instellen

Om optimaal gebruik te kunnen maken van de mogelijkheden van PhpStorm, gaan we eerst een nieuw project aanmaken. Dit is heel eenvoudig!

  1. Ga in het menu naar 'File' en kies 'Open...'.
  2. Blader vervolgens naar de map waar je in Stap 3.2 de bestanden hebt geplaatst en selecteer deze. Klik op 'Ok' en voilà, je eerste project!

PHP-versie instellen in PhpStorm Nu moeten we nog de PHP-versie instellen. Dit kun je vinden rechtsonderin het PhpStorm-venster. Stel de PHP-versie voorlopig in op PHP 7.x. Gebruik dezelfde versie als die momenteel is ingesteld op je hosting (zie stap 2). Op deze manier zorgen we ervoor dat je PHP-site lokaal werkt, net zoals deze momenteel online staat, met PHP 7.

Stap 4.2. Databaseverbinding

Maakt jouw PHP-site gebruik van een database, dan heb je deze als het goed is hierboven geëxporteerd en lokaal geïmporteerd. Maar waarschijnlijk staan er ergens in de PHP-code gebruikersnaam en wachtwoord die niet overeenkomen met de lokale database.

Ga op zoek naar de functie 'mysqli_connect' (of 'mysql_connect' als je een nog oudere PHP-versie gebruikt). Je kan ook zoeken naar 'mysql' (via [CTRL+SHIFT+F] zoek je snel binnen alle bestanden van je project), en waarschijnlijk kom je dan al steeds dichter bij de plek waar de database-inloggegevens zijn ingesteld. Die moeten we aanpassen! Vaak vind je iets als dit:

$database = "jouwdatabase"; # database name $host = "localhost"; # hostname $user = "admin"; # mysql username $pass = ""; # mysql password

Het kan ook zijn dat de inloggegevens voor je database direct zijn ingevuld in de 'mysqli_connect'-functie. Het belangrijkste is dat je ze aanpast, zodat de naam van de database gelijk is aan de database die je hebt aangemaakt in Stap 3.4. Zorg er ook voor dat de host, gebruikersnaam en het wachtwoord gelijk zijn als hierboven. Het wachtwoordveld kun je leeg laten.

Het is lastig om precies te bepalen hoe jouw PHP-site werkt en wat er precies fout kan gaan. Maar als je geen hele rare andere dingen op je website hebt ingesteld, verwacht ik dat je website met bovenstaande wijziging correct werkt! Ga naar jouw-website.localhost.test en check it out!

Werkt het niet? Dan krijg je waarschijnlijk een foutmelding...

Stap 4.3. Foutmeldingen en PHP-errorlog

Als je nog steeds problemen ondervindt, is de kans groot dat je een foutmelding te zien krijgt in je browser. Deze melding kan je helpen om het probleem te identificeren en op te lossen. Als je geen foutmelding ziet, kunnen we de PHP-errorlog raadplegen:

  • Klik met je linkermuisknop op het Wamp icoontje rechtsonderin en ga naar PHP > PHP-errorlog.
  • Hier vind je alle foutmeldingen die PHP heeft gegenereerd, met onderaan de laatste.
  • Naast een beschrijving vind je ook op welke regel in je PHP-code zich een probleem heeft voorgedaan.

Hopelijk heb je na het instellen van de databaseverbinding en het oplossen van eventuele foutmeldingen nu een werkende PHP 7-website. Als dat het geval is, is het tijd voor de volgende stap!

Stap 5. De upgrade van jouw website of webapplicatie naar PHP 8!

Eindelijk is het zover! We gaan van start met de upgrade naar PHP 8 van jouw PHP-site. Een cruciale tool hierbij is PhpStorm. PhpStorm wijst je op mogelijke problemen door ze in rood aan te geven langs de scrollbalk. Met een simpele klik spring je direct naar het probleem in de code. Beweeg met je muis over de betreffende code en je krijgt meteen uitleg over het probleem en mogelijke oplossingen te zien. Maar voordat we hiermee aan de slag gaan, moeten we nog wat instellingen doen.

Stap 5.1. Wamp instellen op PHP 8.x

Gebruik dezelfde methode als bij Stap 3.3 om de PHP-versie van Wamp in te stellen op PHP 8.x. Gebruik de hoogste PHP-versie die ook beschikbaar is bij je hostingprovider (zie Stap 2).

Stap 5.2. PhpStorm instellen op PHP 8.x

Bij Stap 4.1 hebben we de PHP-versie ingesteld op PHP 7.x, maar nu schakelen we over naar PHP 8.x. Kies dezelfde versie als bij Stap 5.1.

Nu zijn we klaar voor de grote test! Open opnieuw je website (jouw-website.localhost.test) in je browser! Misschien werkt alles nu probleemloos met PHP 8?

PhpStorm PHP errors bekijkenIs dat niet het geval? Dan gaan we eerst eens kijken naar alle stukken code die PhpStorm met rood aangegeven heeft. Vaak worden functies gebruikt die niet meer beschikbaar zijn in PHP 8. Los elk probleem stap voor stap op en controleer steeds in je browser of je PHP-site al beter werkt.

Gelukkig heb je in Stap 1 al in kaart gebracht hoe je PHP-site zou moet werken. Dit komt nu goed van pas! Ga alle functionaliteiten en eventuele uitzonderingen na en controleer of alles naar behoren werkt.

Werkt het nog steeds niet? Zie dan Stap 4.3 en bekijk eventuele foutmeldingen of open de PHP-errorlog voor meer informatie over mogelijke problemen.

Wil je echt de diepte ingaan? Overweeg dan het gebruik van Xdebug. Met Xdebug kan je stap voor stap door je PHP-code gaan tijdens het uitvoeren en bekijken welke stukken code worden uitgevoerd en welke waarden bepaalde variabelen op specifieke plekken hebben. Dit is wat geavanceerder om op te zetten, maar het is erg nuttig om lastige problemen te identificeren. Hier vind je een goede handleiding om Xdebug in te stellen.

Over dit blog

In dit blog beschrijf ik hoe je te werk kan gaan indien je geen CMS of framework hebt gebruikt. Verder heb ik zelf gekozen voor een combinatie van Wamp, PhpStorm en werk ik op een Windows-omgeving. Kies jij voor Docker, een andere PHP IDE en/of werk je op een Mac, dan kan je sommige onderdelen overslaan of moet je zelf even uitzoeken hoe je iets instelt in jouw omgeving.

Vragen of hulp nodig bij de PHP 8 upgrade van jouw website of webapplicatie?

Er komt vaak een hoop bij kijken, maar ik wil best een half uur gratis met je meekijken en -denken. Scroll nog iets verder door naar beneden en neem contact met mij op. Is het toch te ingewikkeld en heb je extra hulp nodig, dan hoor ik het ook graag.