在appkernel中没有找到FOSUserBundle[英] FOSUserBundle not found in appkernel

本文是小编为大家收集整理的关于在appkernel中没有找到FOSUserBundle的处理/解决方法,可以参考本文帮助大家快速定位并解决问题,中文翻译不准确的可切换到English标签页查看源文。

问题描述

我在Windows上使用Symfony,我试图按照官方文档中所述配置FosuserBundle.

尝试更新架构时会出现此错误:

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

搜索问题并找到此解决方案: 将其添加到autoLoad.php

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

但它返回另一个错误的错误

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

有人可以告诉我我该怎么办?:|

这是我的appkernel.php文件:

<?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');
    }
}

推荐答案

我也有同样的问题.我发现FosuserBundle未正确安装.您应该删除/dendor/friendsofsymfony/目录,然后使用以下方式更新捆绑包:

php composer.phar update friendsofsymfony/user-bundle

它对我有用.我希望它能帮助别人遇到同样的问题.

其他推荐答案

好吧,您的代码似乎没有错.

在我们可以进行解决方案之前,让我们尝试通过以下步骤重新安装您的捆绑包:

  • 删除您添加到autoLoader.php的东西
  • 运行php composer.phar self-update更新作曲家.
  • 从appkernel.php.
  • 删除行use FOS\UserBundle\FOSUserBundle(),
  • 运行php composer.phar update更新所有捆绑包.
  • 清除您的缓存,运行php app/console cache:clear.
  • 将行use FOS\UserBundle\FOSUserBundle(),再次添加到appkernel.php.

那些应该这样做.如果您仍然无法使用捆绑包,并且需要解决方法(我不建议这样做),这是要走的方法:

打开应用程序/autoload.php. $loader = require __DIR__ . '/../vendor/autoload.php之后.添加以下内容:

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

再次,这应该解决问题,但不是做事的正确方法.您的捆绑包应该工作.

其他推荐答案

在Symfony 3.x中修复此错误.

如果无法执行composer,您只能通过FTP传输文件,则有必要更新文件:

vendor/composer

,也许

vendor/symfony(如果更新版本)

相同的解决方案适用于此错误

致命错误:类'fos \ jsroutingbundle \ fosjsroutingbundle'不 找到

本文地址:https://www.itbaoku.cn/post/2090766.html

问题描述

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

推荐答案

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.

其他推荐答案

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.

其他推荐答案

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