✦ Oplossingen · PHP-fouten

PHP Fatal error: Call to undefined function

'Uncaught Error: Call to undefined function' betekent dat PHP een functie niet kent. Meestal ontbreekt een PHP-extensie, een include of is de functie verwijderd in een nieuwere PHP-versie.

Waarom gebeurt dit?

PHP meldt Fatal error: Uncaught Error: Call to undefined function naam() als code een functie aanroept die op dat moment niet bestaat. Er zijn drie gebruikelijke oorzaken: een PHP-extensie is niet geladen, het bestand met de functie is niet ingeladen, of de functie bestaat niet meer in jouw PHP-versie.

Een klassiek voorbeeld na een PHP-upgrade is mysql_connect(): de oude mysql-functies zijn in PHP 7.0 verwijderd. Andere bekende voorbeelden zijn mb_strlen() of curl_init() als de extensies mbstring of curl ontbreken.

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. Lees welke functie ontbreekt

    De naam van de functie vertelt veel. Begint hij met mb_, curl_, gd/image, intl of zip_, dan hoort hij bij een extensie. Is het een functie van je eigen code of een plugin, dan ontbreekt waarschijnlijk een include.

  2. Controleer of de extensie geladen is

    Bekijk de geladen extensies, via het hostingpaneel of op de server zelf. Ontbreekt de extensie, zet hem dan aan in het PHP-menu van de hosting, of installeer hem op een eigen server.

    php -m | grep -i mbstring
    
    # Debian/Ubuntu, bijvoorbeeld voor PHP 8.3
    sudo apt install php8.3-mbstring
    sudo systemctl reload php8.3-fpm
  3. Controleer de PHP-versie voor web én CLI

    De opdrachtregel kan een andere PHP-versie gebruiken dan de website. Vergelijk php -v met de versie in phpinfo() of het hostingpaneel. Een extensie die je voor de ene versie installeert, is er niet automatisch voor de andere.

  4. Laad het juiste bestand in

    Gaat het om een eigen functie, controleer dan of het bestand wordt geladen voordat de functie wordt aangeroepen, en of het pad klopt. Gebruik require_once met een absoluut pad op basis van __DIR__.

    <?php
    require_once __DIR__ . '/inc/helpers.php';
  5. Vervang verwijderde functies

    Is de functie in een nieuwere PHP-versie verdwenen (zoals mysql_*, ereg, create_function of each), dan helpt geen instelling: de code moet worden aangepast, bijvoorbeeld naar PDO of mysqli voor de database.

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

Na een PHP-update krijg ik 'Call to undefined function mysql_connect()'.

De oude mysql-extensie bestaat niet meer sinds PHP 7.0. De code moet over naar mysqli of PDO. Dat is een code-aanpassing, geen instelling.

Het werkt op mijn computer maar niet op de server.

Waarschijnlijk is een extensie lokaal wel en op de server niet geïnstalleerd, of draait de server een andere PHP-versie. Vergelijk php -m op beide plekken.

Kan ik de functie zelf definiëren om de fout weg te krijgen?

Alleen als je precies weet wat de oorspronkelijke functie deed. Een lege vervanging haalt de foutmelding weg maar laat de site stilletjes verkeerd werken.