11

我正在尝试部署我的 Symfony2 项目。当我运行命令时

php app/console cache:clear --env=prod --no-debug

我收到以下错误:

PHP Fatal error: Class 'Acme\MainBundle\AcmeMainBundle' not found in /var/www/html/app/AppKernal.php on line 24

这是 AppKernal.php 中的

public function registerBundles()
{
    $bundles = array(
        ...
        new Acme\MainBundle\AcmeMainBundle(),
    );
    ...
}

名称空间似乎有问题?

4

8 回答 8

12

如果你在 Symfony 中遇到 bundle not found 错误,在 composer.json 中,像这样修改psr-4部分下的autoload部分。

"autoload": {
    "psr-4": {
        "": "src/"
    },
},

通过这样做,您不必在创建新包时显式添加新的包命名空间。

于 2017-07-12T12:29:34.053 回答
5

遇到了同样的问题。我刚刚删除了我的供应商文件夹

rm -rf vendor

并重新启动作曲家更新..然后一切都很好

composer update
于 2013-11-27T07:52:19.983 回答
5

如果这发生在 Symfony 3 中(我没有在 symfony 2 中测试过),

  1. 确保您的包在 AppKernal.php 中注册为:

    public function registerBundles()
    {
        $bundles = array(
            ...
            new YourBundle\YourBundle(),
        );
        ...
    }
    
  2. 检查你是否更新了 composer.json

    "autoload": {
        "psr-4": {
            "AppBundle\\": "src/AppBundle",
            "YourBundle\\": "src/YourBundle"
        },
        "classmap": [ "app/AppKernel.php", "app/AppCache.php" ]
    },
    
  3. composer update从您的控制台运行

于 2017-08-02T02:38:47.407 回答
2

在使用 Symfony 3.2 添加带有代码生成器的捆绑包后遇到了同样的问题。我必须在 AppBundle 之后的 composer.json 的 autoload 部分添加这个新包:

(...)
"autoload": {
    "psr-4": {
        "AppBundle\\": "src/AppBundle",
        "CoreBundle\\": "src/CoreBundle"
    },
(...)
于 2017-07-04T11:44:25.080 回答
1

原来我需要将它添加到自动加载器。感谢@DevZer0 的评论。

$loader->add('Acme', __DIR__ . '/../src');

于 2013-07-11T03:56:10.547 回答
1

有同样的问题吗?

sudo rm -rf 供应商/

composer install

或者

composer update
于 2016-04-02T15:12:46.613 回答
0

我之前遇到过上述所有错误,但在运行时发现了类似的问题php app/console doctrine:migrations:status

问题是我没有导入用作注释一部分的常量。例如:

/**
 * Either "OUTBOUND" (we send out) or "INBOUND" (we receive).
 *
 * @var string
 *
 * @ORM\Column(name="Direction", type="string", length=20, nullable=true)
 *
 * @Assert\Choice(
 *     choices = {BatchDirections::OUTBOUND,BatchDirections::INBOUND},
 *     message = "Choose a valid direction."
 * )
 */
private $Direction = BatchDirections::INBOUND;

我没有导入 BatchDirections 文件。

通过修复问题解决导入use Nora\BatchBundle\Constants\BatchDirections;问题。

于 2016-06-13T16:23:42.213 回答
0

删除整个文件夹对我来说不是很有说服力,所以我尝试执行以下操作并且它有效:

$ composer update

然后我检查了它:

$ php bin/console assets:install web --symlink
$ php bin/console cache:clear
于 2016-04-02T17:49:24.730 回答