Doctrine 2 / PHP - getDocComment()总是返回false - AnnotationReader / DocParser失败

时间:2012-04-06 17:36:35

标签: php zend-framework doctrine

我这里有一个非常有趣(又烦人)的问题。由于某种原因,PHP方法ReflectionClass::getDocComment()在我的生产环境中返回false(当然在类中实际上有一个块注释...)。

导致Doctrine AnnotationReader / DocParser失败:

(学说\共同\注解\ AnnotationReader.php:143)

public function getClassAnnotations(ReflectionClass $class)
    {
        $this->parser->setTarget(Target::TARGET_CLASS);
        $this->parser->setImports($this->getImports($class));
        $this->parser->setIgnoredAnnotationNames($this->getIgnoredAnnotationNames($class));

        return $this->parser->parse($class->getDocComment(), 'class ' . $class->getName());
    }

我环顾四周并且没有看到很多关于这个问题的内容,所以我想知道为什么在我的生产服务器上发生这种情况时它不在我的本地环境中。

  • 是不是因为有些PHP配置?
  • 是否因为某些读/写/文件访问权限(chown等等)?
  • 是不是因为某些caching configuration ??

我必须说我的想法已经不多了。

非常感谢任何帮助。

感谢。

1 个答案:

答案 0 :(得分:2)

确定。这似乎与eAccelerator在缓存字节代码时剥离所有注释的一些奇怪行为有关...

http://wildlyinaccurate.com/eaccelerator-and-doctrine-2/

(重新)引用来自学说团队的beberlei:

  

这种删除docblock的过早优化应该是   恢复。 Docblocks是一个PHP令牌,有一个原因,它们是一部分   语言,应该这样使用。请修改你的立场   否则项目必须建议不要默认使用eAccelerator。

解决方案是禁用eAccelerator或使用以下选项重新配置它:

--with-eaccelerator-doc-comment-inclusion

(资料来源:https://eaccelerator.net/ticket/229