1

我在这里有一个非常有趣(也很烦人)的问题。出于某种原因,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 等...)?
  • 会不会是因为一些缓存配置

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

任何帮助深表感谢。

谢谢。

4

1 回答 1

2

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

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

(重新)引用 Doctrine 团队的 beberlei 的话:

应该恢复这种用于删除文档块的过早优化。Docblocks 是 PHP 令牌是有原因的,它们是语言的一部分,应该以这种方式使用。请修改您对此的立场,否则项目必须建议不要默认使用 eAccelerator。

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

--with-eaccelerator-doc-comment-inclusion

(来源:https ://eaccelerator.net/ticket/229 )

于 2012-04-07T04:10:19.453 回答