Inleiding
laravel/doctor is een officieel pakket dat veelvoorkomende problemen met configuratie, omgeving en infrastructuur in Laravel-applicaties diagnosticeert. Op 28 juli 2026 werd v0.1.0 uitgebracht. Elke diagnostic is één enkele check. Zo controleert er bijvoorbeeld een of “Laravel naar de storage-directory kan schrijven”, en wordt een van meerdere statussen gerapporteerd. Kan iets veilig en deterministisch worden gerepareerd, dan wordt ook een automatische fix aangeboden; voor problemen die niet automatisch te herstellen zijn, zoals een mislukte assetbuild, worden herstelinstructies (remediation) getoond.Uitvoeren
Na de installatie is het Artisan-commandodoctor geregistreerd.
--fix.
.env, het genereren van een APP_KEY, het uitschakelen van de debugmodus in productie, het toevoegen van .env aan .gitignore, het aanmaken van storage:link en het herstellen van schrijfrechten op de storage-directories.
De fixfunctionaliteit is alleen beschikbaar in de CLI- en agent-uitvoerformaten. In de JSON- en GitHub-rapportformaten wordt
--fix geweigerd, zodat machineleesbare rapporten de applicatie niet wijzigen.--bail stopt de uitvoering bij de eerste diagnostic die faalt of een fout geeft.
Diagnostische statussen
Elke diagnostic retourneert een van de volgende statussen.
Standaard eindigt het commando met een foutstatus bij een
fail of error. Met --fail-on=warn laat je ook waarschuwingen falen, en met --fail-on=never blijft het bij alleen rapporteren.
Diagnostics selecteren
Je kunt diagnostics selecteren en uitsluiten op klassenaam, groep, pakket of pakket-wildcard.Omgevingsmodi
Eensync-queue is bij lokale ontwikkeling een redelijke standaard, maar in productie betekent het dat queue-jobs synchroon binnen het webrequest worden uitgevoerd. Voor dit soort beslissingen lost Doctor je applicatie op naar een van twee modi: local of production.
De standaard Laravel-omgevingsnamen
local, production en staging worden automatisch herkend. Gebruik je andere namen, dan groepeer je ze in het configuratiebestand per modus.
Standaarddiagnostics
Doctor wordt standaard geleverd met een diagnosesuite die onder meer het volgende omvat.- Omgeving — het bestaan van
.env,APP_KEY, de PHP-versie, vereiste extensies, tijdzone - Composer — installatiestatus van de dependencies, autoload-optimalisatie, automatisch herstel van
composer.lock - Configuratie — of configuratiebestanden geladen en gecachet kunnen worden, configuratiewaarden die actieve drivers nodig hebben
- Database — bereikbaarheid van de verbinding, het bestaan van het SQLite-bestand, automatisch toepassen van openstaande migrations
- Cache, queue, scheduler en sessie — bereikbaarheid van de geconfigureerde drivers, detectie van een
sync-queue buiten productie - Storage — bereikbaarheid van de standaarddisk, schrijfrechten op de vereiste directories, het bestaan van
storage:link - Beveiliging — consistentie tussen debugmodus en omgeving, registratie van
.envin.gitignore, audit van de Composer-dependencies
Eigen diagnostics maken
Je maakt een eigen diagnosticklasse door simpelwegLaravel\Doctor\Diagnostic te extenden en de methode check() te implementeren. Scaffolden kan met het Artisan-commando make:diagnostic.
APP_KEY is ingesteld en deze automatisch genereert als dat niet zo is.
fixOptions(). De CLI toont dit als keuzelijst, en de gekozen waarde wordt doorgegeven aan fix().
Skip — leave unfixed). Is een formulering die de huidige keuze behoudt duidelijker, dan kun je een decline-label opgeven.
Diagnostische helpers
Omdat veel applicaties en pakketten steeds dezelfde soorten checks schrijven, biedt Doctor in de namespaceLaravel\Doctor\Support helpers voor veelvoorkomende patronen.
De Configured-helper leest configuratiewaarden defensief. Omdat diagnostics ook applicaties met kapotte configuratie moeten kunnen inspecteren zonder vóór het rapporteren een exception te gooien, gooien deze methoden — anders dan de getypeerde accessors van de configuratierepository — geen exceptions bij onverwachte types.
ActiveDrivers-helper lost wrapperdrivers — zoals een standaardlogkanaal dat stack is of een mailer die failover is — op naar de concrete kanalen of mailers die daadwerkelijk worden gebruikt.
Details-helper formatteert bewijsinformatie die je aan withDetails() hangt. Details::bullets() maakt van een lijst strings een opsomming, Details::failures() verwerkt foutmeldingen met sleutels, en Details::processOutput() kiest de meest bruikbare outputstream van een voltooid proces.
Programmatisch uitvoeren
Je kunt ookDoctor::run() aanroepen zonder het Artisan-commando te gebruiken.
fixUsing in. De callback ontvangt de gefaalde diagnostic die een fix aanbiedt; retourneer false om over te slaan, true om de normale fix toe te passen, of de waarde van een fixoptie om die keuze toe te passen. Wordt een fix toegepast, dan voert Doctor de diagnostic opnieuw uit om dit in het rapport te verwerken.
Uitvoerformaten en ondersteuning voor AI-agents
Doctor toont standaard goed leesbare CLI-output, maar je kunt ook kiezen voor JSON of het annotatieformaat van GitHub Actions.fixable: true kun je herstellen door opnieuw uit te voeren met --fix. Wil je dit formaat buiten een agent proberen, voer dan AI_AGENT=test php artisan doctor uit.
Conclusie
Metlaravel/doctor breng je problemen in de configuratie, omgeving en infrastructuur van je applicatie snel in kaart door alleen php artisan doctor uit te voeren. Het pakket sluit ook goed aan bij AI-codeeragents: het retourneert output die agents makkelijk interpreteren volgens dezelfde conventies als Laravel PAO, waardoor het de moeite waard is om het op te nemen in CI/CD of in automatische herstelworkflows met AI-agents.
laravel/doctor repository
De broncode en het laatste nieuws vind je hier.