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');
}
}
To fix this error in
Symfony 3.x
.If
composer
can not be executed and you can only transfer the files byFTP
, 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
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:
$loader->registerNamespaces(...)
thing you added to autoloader.php.php composer.phar self-update
to update composer.use FOS\UserBundle\FOSUserBundle(),
from AppKernel.php.php composer.phar update
to update all your bundles.php app/console cache:clear
.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:Again, this should fix the issue and yet is not the correct way to do things. Your bundle should be working.
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:
It worked for me. I hope it helps someone else having the same issue.