Доступ к необъявленным статическим свойствам: Doctrine \ ODM \ MongoDB \ Mapping \ Driver \ AnnotationDriver :: - PullRequest
2 голосов
/ 25 июля 2011

Я сталкиваюсь с этой критической проблемой во всех моих Документах, для которых определено поле @ODM \ UniqueIndex, @ODM \ InheritanceType, @ODM \ 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;

}

1 Ответ

0 голосов
/ 26 июля 2011

Это ошибка с APC 3.1.3p1.Я обновился до версии 3.1.9, и теперь он решен.

Надеюсь, это сэкономит время для других людей, которые могут столкнуться с ним в будущемНе используйте пакеты APC из репозиториев debian / ubuntu.Вместо этого используйте PECL.

...