✦ Oplossingen · PHP-fouten

PHP Deprecated-meldingen in PHP 8 begrijpen en oplossen

'Deprecated: … is deprecated' in PHP 8 betekent dat code iets gebruikt dat in een volgende PHP-versie verdwijnt. Het werkt nog, maar moet worden aangepast. Zo pak je het aan.

Waarom gebeurt dit?

Een deprecation is een waarschuwing vooraf: deze manier van programmeren werkt nu nog, maar wordt in een toekomstige PHP-versie verwijderd. Voorbeelden uit PHP 8.x zijn het doorgeven van null aan functies die een tekst verwachten (Passing null to parameter #1 ($string) of type string is deprecated, sinds PHP 8.1) en het dynamisch aanmaken van eigenschappen op een object (sinds PHP 8.2).

Deprecated-meldingen breken je site niet, maar ze zijn een takenlijst voor de volgende upgrade. Wie ze negeert, krijgt ze later terug als fatal error.

Zo los je het op, stap voor stap

Menunamen kunnen per versie of toestel iets anders heten. Loop de stappen op volgorde af en stop zodra het werkt.

  1. Verzamel de meldingen in het log

    Zet tijdelijk E_DEPRECATED aan in het foutenlog (niet op het scherm) en laat de site een dag draaien. Zo zie je welke bestanden het betreft.

    ; php.ini (testomgeving)
    error_reporting = E_ALL
    display_errors = Off
    log_errors = On
  2. Werk plugins, thema's en pakketten bij

    Komen de meldingen uit code van derden (WordPress-plugins, Composer-pakketten), dan is een update meestal de oplossing. Ontwikkelaars passen hun code aan op nieuwe PHP-versies.

  3. Pas eigen code aan: null aan tekstfuncties

    Geef functies als strlen(), trim() of str_replace() geen null mee.

    <?php
    // was: trim($waarde) met $waarde = null
    $schoon = trim($waarde ?? '');
  4. Pas eigen code aan: dynamische eigenschappen

    Declareer eigenschappen in de klasse, of markeer de klasse bewust met het attribuut AllowDynamicProperties.

    <?php
    class Product {
        public ?string $naam = null; // gedeclareerd
    }
  5. Test op de nieuwe PHP-versie vóór je overstapt

    Draai de site op een testomgeving met de nieuwe PHP-versie en kijk in het log. Zie ook PHP-versie controleren en updaten.

Lukt het niet? Wij helpen

Kom je er met deze stappen niet uit, of wil je het liever niet zelf doen? We kijken online mee of komen langs. Hulp op afstand kost €20 per uur; komen we langs, dan is de prijs op aanvraag. Je weet vooraf waar je aan toe bent.

Aanvraag

Hulp aanvragen

Schrijf kort wat er misgaat en wat je al hebt geprobeerd. Kies of we bellen, online meekijken of langskomen.

Veelgestelde vragen

Vragen over dit probleem

Moet ik deprecated-meldingen meteen oplossen?

Niet met spoed, wel vóór je naar de volgende PHP-versie gaat. Zet ze uit op het scherm, maar houd ze bij in het log.

Kan ik ze gewoon uitzetten?

Op het scherm wel (en dat hoort op een live site). Helemaal negeren is onverstandig: het zijn de fouten van de volgende upgrade.

Ze komen allemaal uit één plugin.

Kijk of er een update is. Is de plugin niet meer onderhouden, zoek dan een alternatief voordat je PHP bijwerkt.