PHPDocumentor 2和PHP 7与Doctrine

时间:2016-01-23 00:46:32

标签: php phpdoc php-7 opcache phpdocumentor2

希望有人在这里知道一件事或两件事。

简短问题

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

#> 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,为什么我仍然会收到此错误?

谢谢!

5 个答案:

答案 0 :(得分:15)

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

较早版本的Annotations指的是opcache.load_comments中的php.ini设置,这在PHP 7中不存在:

这已在Annotations上游修复:

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

答案 1 :(得分:8)

您也可以使用composer而无需手动切换供应商目录内容。只需使用:

composer require doctrine/annotations

拥有最新版本的doctrine / annotations(至少1.2.5解决了这个问题)

答案 2 :(得分:7)

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

答案 3 :(得分:4)

感谢deepdivedylan提供链接。但是,composer require --dev phpdocumentor/phpdocumentor并没有解决我的问题。但阅读链接并下载doctrine annotations patch 1.2.5工作正常。只需下载存档并将vendor / doctrine / annotations文件夹替换为其内容即可。

答案 4 :(得分:0)

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

网站上的链接是旧版本。