5 votes

Symfony 4 - Noyau d'exception ClassNotFoundException

Je suis en train de mettre à jour mon projet symfony 3.4 vers symfony 4.0. Après avoir cloné les bundles de mes dépôts gitlab avec composer update, j'ai une erreur :

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)

Ok.... Facile... allez dans index.php ligne 32... mais, le noyau est chargé avec l'application. \Kernel Vous avez donc une idée de la raison de cette erreur ou de l'endroit où je peux chercher ?

Merci pour votre aide.

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);

Et dans le répertoire "src", j'ai le fichier 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}';
    .....

0voto

Luma Macagnan Points 81

Symfony 4 utilise le dossier "App" pour l'autoload "psr-4". J'ai essayé de le changer, mais cela n'a pas fonctionné. Vérifiez l'espace de nom dans votre fichier composer.json, dans la propriété "autoload" et ensuite "psr-4". Peut-être avez-vous changé celui par défaut.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X