类在AppKernel.php中找不到

时间:2013-07-11 02:20:46

标签: php symfony deployment namespaces

我正在尝试部署我的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(),
    );
    ...
}

似乎命名空间存在问题?

8 个答案:

答案 0 :(得分:10)

如果您在Symfony中收到包未找到错误,请在composer.json中修改psr-4部分下的autoload部分,如下所示。

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

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

答案 1 :(得分:5)

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

rm -rf vendor

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

composer update

答案 2 :(得分: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

答案 3 :(得分:2)

使用Symfony 3.2添加代码生成器捆绑包后出现同样的问题。我不得不在AppBundle之后在composer.json的autoload部分添加这个新包:

val df = Seq(
  (1.0,2.0,3.0,4.0,5.0)  
).toDF("x1","x2","x3","x4","x5")


val describe = udf(
  { xs : Seq[Double] => 

    val xmin = xs.min
    val xmax = xs.max
    val mean = xs.sum/xs.size.toDouble

    (xmin,xmax,mean)
  }
)

df
.withColumn("describe",describe(array("*")))
.withColumn("min",$"describe._1")
.withColumn("max",$"describe._2")
.withColumn("mean",$"describe._3")
.drop($"describe")
.show

答案 4 :(得分:1)

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

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

答案 5 :(得分:1)

有同样的问题吗?

sudo rm -rf vendor /

composer install

composer update

答案 6 :(得分:0)

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

$ composer update

然后我用:

检查了它
$ php bin/console assets:install web --symlink
$ php bin/console cache:clear

答案 7 :(得分: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;解决导入问题解决了问题。