PSR-4 Autoload Namespace Mismatch
Class 'App\Controller\HomeController' not found despite file existing at src/Controller/HomeController.phpQuick Answer
The namespace in the class file does not match the PSR-4 autoload mapping in composer.json. Verify the namespace declaration matches the directory structure and autoload configuration.
Why This Happens
PSR-4 autoloading maps namespaces to directories. If composer.json maps App\ to src/, then App\Controller\HomeController must be in src/Controller/HomeController.php with the namespace App\Controller. A mismatch anywhere in this chain causes the class to not be found.
The Problem
// composer.json: "App\\" => "src/"
// File: src/Controller/HomeController.php
namespace Controllers; // Wrong namespace!
class HomeController {}The Fix
// composer.json: "App\\" => "src/"
// File: src/Controller/HomeController.php
namespace App\Controller; // Matches PSR-4 mapping
class HomeController {}Step-by-Step Fix
- 1
Check composer.json autoload
Look at the autoload.psr-4 section in composer.json to see how namespaces map to directories.
- 2
Verify the namespace
Ensure the namespace in the PHP file matches what PSR-4 expects: base namespace + subdirectory path.
- 3
Rebuild autoloader
Run composer dump-autoload -o to regenerate the optimized autoloader after fixing the namespace.
Got the actual stack trace?
Paste it into our free AI explainer to get the cause and the fix for your specific case — no signup, nothing to install.
Explain my errorBugsly catches this automatically
Bugsly's AI analyzes this error pattern in real-time, explains what went wrong in plain English, and suggests the exact fix — before your users even report it.
Try Bugsly free