Подтвердить что ты не робот

PHPDocumentor 2 и PHP 7 с проблемами opcache в 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 через этот файл.

С учетом сказанного, если у меня есть opcache.load_comments=1 в моем .ini файле, почему я все еще получаю эту ошибку?

Спасибо!

4b9b3361

Ответ 1

Я столкнулся с той же проблемой при использовании PHP-версии PHPDocumentor. PHAR включает устаревшую версию аннотаций доктрины.

Более старая версия аннотаций ссылается на параметр opcache.load_comments в php.ini, который не существует в PHP 7:

Это аннулировано в аннотации:

Теперь, используя версию композитора PHPDocumentor, выполнив composer require --dev phpdocumentor/phpdocumentor, я решил проблему для меня.

Ответ 2

Вы также можете использовать композитор без ручного переключения содержимого каталога поставщиков. Просто используйте:

composer require doctrine/annotations

иметь последнюю версию доктрины/аннотации (по крайней мере 1.2.5 решает проблему)

Ответ 3

phpDocumentor 2.8.5 - это версия по умолчанию с Ubuntu 16.04. Однако поддержка php7 не была добавлена ​​до 2,9. Я получил его работу, используя в командной строке следующее:

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

Если вы установили phpDocumentor из груши, используйте следующую команду, чтобы удалить его:

sudo pear uninstall phpdoc/phpDocumentor

Ответ 4

Спасибо deepdivedylan за ссылки. Однако composer require --dev phpdocumentor/phpdocumentor не решила мою проблему. Но чтение ссылок и загрузка аннотаций доктрины 1.2.5 работали нормально. Просто загрузите архив и замените папку vendor/doctrine/annotations своим содержимым.

Ответ 5

Вы можете скачать последнюю версию phar из github release.

Ссылка с сайта на более старую версию.