'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.
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.
Menunamen kunnen per versie of toestel iets anders heten. Loop de stappen op volgorde af en stop zodra het werkt.
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.
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-fpmDe 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.
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';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.
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.
Schrijf kort wat er misgaat en wat je al hebt geprobeerd. Kies of we bellen, online meekijken of langskomen.
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.
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.
Alleen als je precies weet wat de oorspronkelijke functie deed. Een lege vervanging haalt de foutmelding weg maar laat de site stilletjes verkeerd werken.
Hulp nodig van een mens? Website-onderhoud · WordPress-support · Hosting en onderhoud · Alle oplossingen