希望有人在这里知道一件事或两件事。
简短问题
我在命令行上使用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
,为什么我仍然会收到此错误?
谢谢!
答案 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。
网站上的链接是旧版本。