✦ Oplossingen · PHP-fouten

PHP Uncaught Error: Class not found

'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.

Waarom gebeurt dit?

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.

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. Controleer namespace en use-regel

    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.

  2. Controleer de bestandsnaam en map

    Volgens PSR-4 hoort App\Models\Gebruiker in app/Models/Gebruiker.php te staan, met precies dezelfde hoofdletters als de klassenaam.

  3. Installeer de dependencies

    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-autoloader
  4. Werk de autoloader bij na nieuwe klassen

    Heb je een klasse toegevoegd buiten de PSR-4-mappen, of gebruik je een classmap, laat Composer dan de autoloader opnieuw opbouwen.

    composer dump-autoload -o
  5. Controleer of vendor/autoload.php geladen wordt

    Zonder deze regel bovenaan je instappunt (bijvoorbeeld index.php) laadt Composer niets.

    <?php
    require __DIR__ . '/vendor/autoload.php';

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

Lokaal werkt alles, op de server krijg ik Class not found.

Bijna altijd een verschil in hoofdletters in de bestandsnaam, of vendor/ is niet (opnieuw) geïnstalleerd op de server. Controleer beide.

Moet ik de map vendor naar de server kopiëren?

Liever niet; draai composer install op de server met de composer.lock uit je project, zodat precies dezelfde versies worden geïnstalleerd.

Ik gebruik geen Composer, wat dan?

Laad het klassebestand dan zelf in met require_once, of schrijf een eenvoudige autoloader met spl_autoload_register.