PHPDocumentor 2 和 PHP 7 在 Doctrine 中存在 opcache 问题

PHPDocumentor 2 and PHP 7 with opcache issues in Doctrine

希望这里有人对此有所了解。

小问题

我 运行 在命令行上使用 phpdoc 时出错,通过 pear 安装在 PHP 7.0.2 上。错误是:

#> phpdoc
PHP Fatal error:  Uncaught Doctrine\Common\Annotations\AnnotationException: 
You have to enable opcache.load_comments=1 or zend_optimizerplus.load_comments=1. 
in /usr/local/php5-7.0.2-20160108-102134/lib/php/phpDocumentor/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationException.php:193

如何修复此错误?

详情

Opcache 已启用,opcache.load_comments=1 在我的 opcache.ini 文件中,分别使用以下命令验证:php -i | grep "Opcode"php -i | grep "opcache"。在该 .ini 文件中,我可以通过检查通过该文件启用和禁用 opcache 来验证是否加载了更改。

也就是说,如果我的 .ini 文件中有 opcache.load_comments=1,为什么我仍然会收到此错误?

谢谢!

我在使用 PHPDocumentor 的 PHAR 版本时遇到了同样的问题。 PHAR 包括 Doctrine Annotations 的过时版本。

旧版本的注释是指 php.ini 中的 opcache.load_comments 设置,PHP 中不存在该设置 7:

这已在上游注释中修复:

现在,通过执行 composer require --dev phpdocumentor/phpdocumentor 使用 PHPDocumentor 的作曲家版本解决了我的问题。

感谢 deepdivedylan 提供链接。但是,composer require --dev phpdocumentor/phpdocumentor并没有解决我的问题。但是阅读链接并下载 doctrine annotations patch 1.2.5 效果很好。只需下载存档并用其内容替换 vendor/doctrine/annotations 文件夹。

您也可以在不手动切换 vendors 目录内容的情况下使用 composer。只需使用:

composer require doctrine/annotations

要有最新版本doctrine/annotations(至少1.2.5解决问题)

phpDocumentor 2.8.5 是 Ubuntu 16.04 的默认版本。但是,直到 2.9 才添加 php7 支持。我通过在命令行上使用以下命令让它工作:

sudo apt-get install php7.0-mbstring
wget https://github.com/phpDocumentor/phpDocumentor2/releases/download/v2.9.0/phpDocumentor.phar
chmod +x phpDocumentor.phar
sudo mv phpDocumentor.phar /usr/local/bin/phpDocumentor-2.9.phar
sudo ln -s /usr/local/bin/phpDocumentor-2.9.phar /usr/local/bin/phpdoc

如果您从 pear 安装了 phpDocumentor,请使用以下命令将其删除:

sudo pear uninstall phpdoc/phpDocumentor

您可以从 github releases 下载最新版本的 phar。

来自网站的 link 是它的旧版本。