Symfony 4 - Kernel类未找到异常

13

我正在将我的Symfony 3.4项目升级到Symfony 4.0。 在使用composer update从我的gitlab仓库克隆bundles之后,出现了一个错误:

ClassNotFoundException

Attempted to load class "Kernel" from namespace "App".
Did you forget a "use" statement for "Symfony\Component\HttpKernel\Kernel"?


in index.php (line 32)

好的,很简单,进入 index.php 文件第 32 行... 但是,Kernel 是由 App\Kernel 加载的,所以有任何想法为什么我会遇到这个错误或者我可以在哪里寻找解决方法?

谢谢您的帮助。

index.php

use App\Kernel;
use Symfony\Component\Debug\Debug;
use Symfony\Component\Dotenv\Dotenv;
use Symfony\Component\HttpFoundation\Request;

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

// The check is to ensure we don't use .env in production
if (!isset($_SERVER['APP_ENV'])) {
    (new Dotenv())->load(__DIR__.'/../.env');
}

if ($_SERVER['APP_DEBUG'] ?? ('prod' !== ($_SERVER['APP_ENV'] ?? 'dev'))) {
    umask(0000);

    Debug::enable();
}


    // Request::setTrustedProxies(['0.0.0.0/0'], Request::HEADER_FORWARDED);

$kernel = new Kernel($_SERVER['APP_ENV'] ?? 'dev', $_SERVER['APP_DEBUG'] ?? ('prod' !== ($_SERVER['APP_ENV'] ?? 'dev')));

$request = Request::createFromGlobals();
$response = $kernel->handle($request);
$response->send();
$kernel->terminate($request, $response);

在“src”目录中,我有Kernel.php文件。
namespace App;

use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait;
use Symfony\Component\Config\Loader\LoaderInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\HttpKernel\Kernel as BaseKernel;
use Symfony\Component\Routing\RouteCollectionBuilder;

class Kernel extends BaseKernel
{
    use MicroKernelTrait;

    const CONFIG_EXTS = '.{php,xml,yaml,yml}';
    .....

猜测您的composer.json psr4部分仍然是AppBundle而不是App。 - Cerad
没有。我有正确的路径,"": "src/"。 - Skyd
2
你运行了composer dump-autoload吗? - Cerad
是的。没有同样的错误。 - Skyd
2
Sym4 的 PSR4 自动加载是 App\\": "src/" - Rufinus
显示剩余10条评论
2个回答

5

Symfony 4使用文件夹App来进行psr-4自动加载。我试过更改,但没有成功。请在你的composer.json文件中检查命名空间,在属性autoloadpsr-4中。也许你更改了默认值。


4

也许您不小心删除了composer.json中的PSR-4块,而这在Symfony4中是必须的

"autoload": {
    "psr-4": {
        "App\\": "src/"
    }
},

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接