Symfony3:致命错误:类';AppKernel';在中找不到.in 控制台


Symfony3: Fatal error: Class 'AppKernel' not found in .inconsole

刚开始处理一个项目,我运行了composer update,在尝试清除缓存时遇到了一个异常。

当我尝试运行php bin'console server:run时,我会收到以下消息:

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

另一种强烈的可能性,特别是如果项目是从v2.7项目(或之前)更新的,就是Composer不知道AppKernel。现在的最佳做法是不手动要求/包括文件(因此这些行将从web/app_*.phpbin/console.php中删除)。而是自动加载。但是,这需要Composer中的一行,以便可以找到它。只有composer自动加载器会被手动包含,然后它可以加载其他所有内容。

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

这可能有两个原因。

首先你的自动加载器是垃圾或找不到文件

composer dump-autoload

第二个原因可能是,您的var目录不可写,其中放置了symfony的缓存文件。只需检查权限即可。还要仔细查看日志文件。也许它告诉你真正的问题是什么。(比如语法问题等)

由于某种原因,我不得不显式地将src/Kernel.php添加到自动加载中。所以我的composer.json自动加载部分变成了:
"autoload" : {
        "files": ["app/AppKernel.php",
                  "src/Kernel.php"],
        "psr-4": { "": "src/"},
      "classmap": [
            "app/AppKernel.php",
            "app/AppCache.php"
    ]
        }

添加这些之后,运行composer dump-autoload就完成了任务。