2014-03-05 64 views
6

當我在網上部署symfony的網站包括映射超實體,我得到以下錯誤:symfony的部署錯誤:映射超

AnnotationException: [Semantical Error] The annotation "@Doctrine\ORM\Mapping\MappedSuperClass" in class Acme\DemoBundle\Entity\Foo does not exist, or could not be auto-loaded. 

糟糕的是,如果我們使用的Web /應用這個錯誤不會顯示。 php(調試模式爲true),而如果使用web/app_dev.php則會阻止程序。

我應該補充一點,在本地,使用web/app.php或web/app_dev.php時不會顯示此錯誤。

有沒有人有關於這個黑暗之謎的線索?

在此先感謝您的任何提示。

+0

嗯,請確保您使用的相同版本的'Doctrine'和'DBAL'在本地和遠程服務器上...... –

+0

嗯,我絕對相信這是相同的版本,因爲我確保通過ftp(而不是使用composer)導出它們。問題仍然存在!另外,它爲什麼會影響web/app_dev.php而不是web/app.php? – Wisebes

回答

19

好吧,

我會回答我自己的問題,對於任何程序員同胞加工未來部署的緣故。

問題出在教條註釋上。

我把: @MappedSuperclass

,而它是:​​ @MappedSuperclass

記住: 在Mac上,它不會有所作爲。但如果在prod模式下(在調試選項爲true的情況下)也是如此。這就是爲什麼它使用web/app.php。

但是,在開發模式(web/app_dev.php)中,它不適用於Linux環境,這使得大寫字母和普通字母之間存在差異。

我希望它會爲你節省這引起了我的頭痛;)

問候,

Wisebes

[問題解決]

+5

你應該接受你自己的答案。我有這個問題,你的答案完美解決了它。 – Fuzzzzel

+0

贊同@Fuzzzzel –

+0

完美的作品! – Carles