'Fatal error: Uncaught Error: Class "…" not found' komt door autoloading, een verkeerde namespace, een ontbrekende Composer-installatie of een hoofdlettergevoelige bestandsnaam. Zo vind je het.
PHP meldt Uncaught Error: Class "App\Models\Gebruiker" not found als code een klasse gebruikt die niet is ingeladen. In moderne projecten laadt de autoloader van Composer klassen automatisch op basis van namespace en bestandsnaam; gaat daar iets mis, dan krijg je deze fout.
Een veelvoorkomende valkuil: op Windows en macOS zijn bestandsnamen meestal niet hoofdlettergevoelig, op een Linux-server wel. Gebruiker.php en gebruiker.php zijn daar twee verschillende bestanden. Code die lokaal werkt, faalt dan op de server.
Menunamen kunnen per versie of toestel iets anders heten. Loop de stappen op volgorde af en stop zodra het werkt.
De volledige naam van de klasse moet kloppen: de namespace bovenaan het klassebestand en de use-regel in het bestand dat hem gebruikt. Een ontbrekende use-regel laat PHP de klasse in de verkeerde namespace zoeken.
Volgens PSR-4 hoort App\Models\Gebruiker in app/Models/Gebruiker.php te staan, met precies dezelfde hoofdletters als de klassenaam.
Ontbreekt de map vendor/ op de server, of is die verouderd, dan bestaat de autoloader niet of kent hij nieuwe pakketten niet. Draai Composer in de projectmap.
composer install --no-dev --optimize-autoloaderHeb je een klasse toegevoegd buiten de PSR-4-mappen, of gebruik je een classmap, laat Composer dan de autoloader opnieuw opbouwen.
composer dump-autoload -oZonder deze regel bovenaan je instappunt (bijvoorbeeld index.php) laadt Composer niets.
<?php
require __DIR__ . '/vendor/autoload.php';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.
Bijna altijd een verschil in hoofdletters in de bestandsnaam, of vendor/ is niet (opnieuw) geïnstalleerd op de server. Controleer beide.
Liever niet; draai composer install op de server met de composer.lock uit je project, zodat precies dezelfde versies worden geïnstalleerd.
Laad het klassebestand dan zelf in met require_once, of schrijf een eenvoudige autoloader met spl_autoload_register.
Hulp nodig van een mens? Website-onderhoud · WordPress-support · Hosting en onderhoud · Alle oplossingen