FOSUserBundle not found in appkernel

回眸只為那壹抹淺笑 提交于 2019-12-12 08:11:41

问题


I am using symfony on Windows and I tried to configure FOSUserBundle as described in the official documentation.

I get this error when try to update the schema:

Class 'FOS\UserBundle\FOSUserBundle' not found in app/AppKernel.php line 20;

searched for the problem and find this solution: adding this to autoload.php

$loader->registerNamespaces(array(
    //all the rest
    'FOS' => $vendor_dir . '/bundles',
));

but it returns another error which says

call to undefined method ...\ClassLoader::RegisterNamespace() in ...\autoload.php on line 13

can anybody plz tell me what should i do?:|

and this is my appkernel.php file:

<?php

use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\Config\Loader\LoaderInterface;

class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
            new Symfony\Bundle\SecurityBundle\SecurityBundle(),
            new Symfony\Bundle\TwigBundle\TwigBundle(),
            new Symfony\Bundle\MonologBundle\MonologBundle(),
            new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
            new Symfony\Bundle\AsseticBundle\AsseticBundle(),
            new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
            new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
            new Sad\Bundle\WarehouseBundle\SadWarehouseBundle(),
            new FOS\UserBundle\FOSUserBundle(),
        );

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

        return $bundles;
    }

    public function registerContainerConfiguration(LoaderInterface $loader)
    {
        $loader->load(__DIR__.'/config/config_'.$this->getEnvironment().'.yml');
    }
}

回答1:


I had the same problem. I found out that the FOSUserBundle was not properly installed. You should delete your /vendor/friendsofsymfony/ directory and then update the bundle using:

php composer.phar update friendsofsymfony/user-bundle

It worked for me. I hope it helps someone else having the same issue.




回答2:


Alright, there seems to be nothing wrong with your code.

Before we can get on the workarounds, let's try to reinstall your bundle, through the following steps:

  • Remove that $loader->registerNamespaces(...) thing you added to autoloader.php.
  • Run php composer.phar self-update to update composer.
  • Remove the line use FOS\UserBundle\FOSUserBundle(), from AppKernel.php.
  • Run php composer.phar update to update all your bundles.
  • Clear your cache, running php app/console cache:clear.
  • Add the line use FOS\UserBundle\FOSUserBundle(), to AppKernel.php again.

Those should do it. If you still can't use the bundle and you need the workaround (which I wouldn't advice), this is the way to go:

Open app/autoload.php. Right after $loader = require __DIR__ . '/../vendor/autoload.php. add the following:

//Loads FOSUserBundle
$loader->add('FOS', __DIR__.'/../vendor/friendsofsymfony/user-bundle/FOS');

Again, this should fix the issue and yet is not the correct way to do things. Your bundle should be working.




回答3:


To fix this error in Symfony 3.x.

If composer can not be executed and you can only transfer the files by FTP, it's necessary to update the file:

vendor/composer

and maybe

vendor/symfony (if the version is updated)

The same solution applies to this error

Fatal error: Class 'FOS \ JsRoutingBundle \ FOSJsRoutingBundle' not found



来源:https://stackoverflow.com/questions/17946989/fosuserbundle-not-found-in-appkernel

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!