0

ubuntuを搭載したローカルPCにsymfony2アプリがあり、正常に動作しますが、CentOSとCpanelを搭載したサーバーでは機能せず、次のエラーが発生しました:

クラス "Propa\PageBundle\Entity\Page" は、有効なエンティティまたはマップされたスーパー クラスではありません。

重大 - Doctrine\ORM\Mapping\MappingException: クラス "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: ~

しかし、常に同じエラーが発生します。

私に何ができる?

更新: symfony2 アノテーションを使用して eAccelerator にあった問題を解決しました。eAccelerator をアンインストールし、APC をインストールしましたが、正常に動作します!!

4

1 に答える 1

2

最後に、キャッシュ オプティマイザの問題である可能性があります。eAccelerator を使用している場合、おそらく Doctrine で問題が発生します。その理由は、eAccelerator がコードから注釈を削除するためです! doctrine でうまく機能する APC を試すことができます。

apc vs eaccelerator vs xcacheを読む


見て

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

アプリケーションを機能させるために必要な要件を示します。

ページ エンティティ クラスを公開してください。


このエラーには多くの理由が考えられます。ファイルシステムでクラスを移動した後、「クラス XXX は有効なエンティティまたはマップされたスーパー クラスではありません」という質問が既にここで出されています。

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

そして、それが機能するかどうかを確認してください。

于 2013-02-20T17:34:28.773 に答える