symfony2不是有效实体或映射超类

时间:2013-02-20 17:25:15

标签: symfony doctrine-orm centos symfony-2.1 cpanel

我有一个symfony2应用程序,在我的本地电脑上使用ubuntu并且运行良好,但在使用CentOS和Cpanel的服务器不起作用时,我收到了这个错误:

  

类“Propa \ PageBundle \ Entity \ Page”不是有效实体或已映射   超级。

     

CRITICAL - Doctrine \ ORM \ Mapping \ MappingException:Class   “Propa \ PageBundle \ Entity \ Page”不是有效实体或映射超级   类。 (未被捕的例外)在   /home/estudi83/domains/serverprova.com.es/propa/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/MappingException.php   第216行

我证明:

$page=$em->getRepository('PropaPageBundle:Page')->findOneBy(array('codi'=>'0001'));

并获得此错误:Unknown Entity namespace alias 'PropaPageBundle'.

我证明了:

 $page=$em->getRepository('Propa\PageBundle\Entity\Page')->findOneBy(array('codi'=>'0001'));

并获得相同的错误:Class "Propa\PageBundle\Entity\Page" is not a valid entity or mapped super class.

这是实体:

<?php
namespace Propa\PageBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Doctrine\Common\Collections\ArrayCollection;
use Vich\UploaderBundle\Mapping\Annotation as Vich;
use Propa\PageBundle\Util;
use Gedmo\Mapping\Annotation as Gedmo;




/**
 * @ORM\Entity(repositoryClass="Propa\PageBundle\Repository\PageRepository")
 * @Gedmo\TranslationEntity(class="Propa\PageBundle\Entity\Translation\PageTranslation")
 * @ORM\HasLifecycleCallbacks
 * @Vich\Uploadable
 */

class Page {

    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue
     */
    protected $id;

我证明了:

auto_mapping: true

auto_mapping: false
mappings:
    PageBundle: ~

但总是会得到同样的错误。

我该怎么办?

更新:解决了eAccelerator中带有symfony2注释的问题,我卸载了eAccelerator并安装了APC并且工作正常!!

1 个答案:

答案 0 :(得分:2)

最后,它可能是缓存优化器问题。如果您使用的是eAccelerator,那么您可能会遇到问题,可能是使用了Doctrine。原因是eAccelerator从代码中删除了注释!您可以尝试APC,它与学说表现良好。

阅读apc vs eaccelerator vs xcache


看看

http://you.site.name/config.php

它向您展示了使您的应用程序有效的要求。

请公开您的页面实体类。


此错误可能有很多原因,您的问题已在SO "Class XXX is not a valid entity or mapped super class" after moving the class in the filesystem

上提出

https://github.com/symfony/symfony/issues/4554


$page=$em->getRepository('PageBundle:Page')->findOneBy(array('codi'=>'0001'));

将其更改为

 $page=$em->getRepository('PropaPageBundle:Page')->findOneBy(array('codi'=>'0001'));

 $page=$em->getRepository('Propa\PageBundle\Entity\Page')->findOneBy(array('codi'=>'0001'));

看看它是否有效。