Richard87
Richard87

Reputation: 1622

Symfony3: Fatal error: Class 'AppKernel' not found in .\bin\console

just started working on a project, I ran composer update and was greeted with a exception when trying to clear cache.

When I try to run php bin\console server:run I am greeted with this message:

php bin\console server:run
PHP Fatal error:  Uncaught Symfony\Component\Debug\Exception\FatalThrowableError: Fatal error: Class 'AppKernel' not found in CoreBundle\bin\console:27
Stack trace:
#0 {main}
  thrown in CoreBundle\bin\console on line 27

Fatal error: Uncaught Symfony\Component\Debug\Exception\FatalThrowableError: Fatal error: Class 'AppKernel' not found in CoreBundle\bin\console on line 27

Symfony\Component\Debug\Exception\FatalThrowableError: Fatal error: Class 'AppKernel' not found in CoreBundle\bin\console on line 27

Call Stack:
    0.0112     427536   1. Symfony\Component\Debug\ErrorHandler->handleException() CoreBundle\vendor\symfony\symfony\src\Symfony\Component\Debug\ErrorHandler.php:0

Upvotes: 5

Views: 10792

Answers (3)

Pörripeikko
Pörripeikko

Reputation: 878

For some reason, I had to explicitly add src/Kernel.php to autoload. So my composer.json autoload section became:

"autoload" : {
        "files": ["app/AppKernel.php",
                  "src/Kernel.php"],
        "psr-4": { "": "src/"},
      "classmap": [
            "app/AppKernel.php",
            "app/AppCache.php"
    ]
        }

After adding this, running composer dump-autoload did the trick.

Upvotes: 0

Chris West
Chris West

Reputation: 741

There are two possible reasons for this.

First your autoloader is trashed or can't find files

composer dump-autoload

Second reason could be, that your var directory isn't writable in which the cache file for symfony is placed. Just check the permissions. Also take a close look into the log files. Maybe it tells you what the real Problem is. (Like an issue with syntax etc.)

Upvotes: 2

Alister Bulman
Alister Bulman

Reputation: 35139

Another strong possibility, particularly if the project has been updated from a v2.7 project (or before) is that the AppKernel is just not known to Composer. It is now best practice to not manually require/include the file, (so those lines are removed from web/app_*.php, and bin/console.php). but instead have it autoloaded. However, this requires a line in Composer so that it can be found. Only the composer autoloader would ever be included manually, which can then load everything else.

"autoload": {
    "files": ["app/AppKernel.php"],
    "psr-4": {  // etc...

Upvotes: 13

Related Questions