Symfony composer install - Uncaught Symfony\Component\Debug\Exception\ClassNotFoundException: Attempted to load class "SensioGeneratorBundle"

18,277

Solution 1

In Prod environnment, the SensioGeneratorBundle is not registred. This bundle should be defined like a dev bundle as follow :

if (in_array($this->getEnvironment(), array('dev', 'test'))) {
        $bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle();
        $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
        $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
        $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
    }

And inside your composer file :

"require-dev": {
    "sensio/generator-bundle": "~2.3"
}

If you want to use generation commands from this bundle in Prod env, you should move the declaration from dev to Prod (not recommended!)

Solution 2

in my case Sensio Generator Bundle is deprecated in Symfony 4, so you may comment or delete this 2 lines below.

    if (in_array($this->getEnvironment(), array('dev', 'test'))) {
        $bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle();
        $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
         //$bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
        //$bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
    }

Solution 3

This also depend of your goal:

  • if you want to setup a prod env : run composer install --no-dev and SYMFONY_ENV=prod and the error should go away.
Share:
18,277
houfio
Author by

houfio

JavaScript developer

Updated on June 13, 2022

Comments

  • houfio
    houfio almost 2 years

    Composer fails to install symfony in the production environment. Everything works fine in development. All permissions are fine.

    PHP Fatal error:  Uncaught Symfony\Component\Debug\Exception\ClassNotFoundException: Attempted to load class "SensioGeneratorBundle" from namespace "Sensio\Bundle\GeneratorBundle".
    Did you forget a "use" statement for another namespace? in /home/ev/app/AppKernel.php:25
    Stack trace:
    #0 /home/ev/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php(396): AppKernel->registerBundles()
    #1 /home/ev/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php(114): Symfony\Component\HttpKernel\Kernel->initializeBundles()
    #2 /home/ev/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Console/Application.php(68): Symfony\Component\HttpKernel\Kernel->boot()
    #3 /home/ev/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php(118): Symfony\Bundle\FrameworkBundle\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #4 /home/ev/bin/console(27): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Inp in /home/ev/app/AppKernel.php on line 25
    

    This is line 25 of AppKernel.php:

    $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
    

    Any suggestions are welcome :)