我在我的所有文档上都面临着这个关键问题,它有@ODM \ UniqueIndex,@ ODM \ _ InheritanceType,@ ORM \ DiscriminatorField等定义的字段。基本上,如果除了类的@ODM \ Document注释之外还有其他内容,我在尝试使用DocumentManager检索文档时会收到以下错误:
出于某种原因,它试图访问一个带有奇怪字符的静态属性,如$D7 1等。发生了什么?有人可以帮我解决这个问题,因为我们已经在我们的项目中遇到了障碍。正在使用ODM的最新主分支。
注意:只有在启用APC时才会抛出此异常。如果我禁用APC并重启apache,它可以正常工作。此外,当启用APC时,它适用于第一次加载,但对于每个连续请求都会失败。 (猜测这种情况正在发生,因为只有在第一次请求后才填充APC操作码缓存)
Fatal error: Access to undeclared static property: Doctrine\ODM\MongoDB\Mapping\Driver\AnnotationDriver::$�S in /home/dayson/projects/www/textme/ninja/library/Doctrine/ODM/MongoDB/Mapping/Driver/AnnotationDriver.php on line 146
Call Stack
# Time Memory Function Location
.....
6 0.0037 1319032 Doctrine\ODM\MongoDB\DocumentManager->find( ) ../Test.php:34
7 0.0038 1322736 Doctrine\ODM\MongoDB\DocumentManager->getRepository( ) ../DocumentManager.php:574
8 0.0038 1322736 Doctrine\ODM\MongoDB\DocumentManager->getClassMetadata( ) ../DocumentManager.php:474
9 0.0038 1322736 Doctrine\ODM\MongoDB\Mapping\ClassMetadataFactory->getMetadataFor( ) ../DocumentManager.php:273
10 0.0038 1322736 Doctrine\ODM\MongoDB\Mapping\ClassMetadataFactory->loadMetadata( ) ../ClassMetadataFactory.php:180
11 0.0050 1495432 Doctrine\ODM\MongoDB\Mapping\Driver\AnnotationDriver->loadMetadataForClass( ) ../ClassMetadataFactory.php:243
$dm->find('Document\User', '4e283aabc2749a4b7d0001dd')
<?php
namespace Document;
use Doctrine\ODM\MongoDB\Mapping\Annotations as ODM;
/**
* @ODM\Document
* @ODM\UniqueIndex(keys={"mobile"="asc"})
*/
class User extends \Document\AbstractDocument
{
/**
* @var string
* @ODM\Id
*/
protected $id;
/**
* @var string
* @ODM\String
*/
protected $mobile;
}
答案 0 :(得分:0)
这是APC 3.1.3p1的错误。我升级到3.1.9版本,现在已经解决了。
希望这为将来可能会遇到它的其他人节省一些时间。不要使用debian / ubuntu存储库中的APC包。改为使用PECL。