phpDocumentor 2 и PHP 7 с проблемами opcache в доктрине
Надеюсь, кто-нибудь здесь знает кое-что или 2 об этом.
Короткий Вопрос
Я столкнулся с ошибкой при использовании 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, почему я все еще получаю эту ошибку?
Спасибо!
5 answers
Я столкнулся с той же проблемой при использовании PHAR-версии phpDocumentor. PHAR включает устаревшую версию аннотаций доктрины.
Более старая версия аннотаций ссылается на параметр opcache.load_comments
в php.ini
, которого нет в PHP 7:
Это было исправлено выше по течению в аннотациях:
На данный момент использование композиторской версии phpDocumentor путем выполнения composer require --dev phpdocumentor/phpdocumentor
решило проблему для меня.
Вы также можете использовать composer без ручного переключения содержимого каталога поставщиков. Просто используйте:
composer require doctrine/annotations
Иметь последнюю версию доктрины/аннотаций (по крайней мере, 1.2.5 решает проблему)
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 из pear, используйте следующее, чтобы удалить его:
sudo pear uninstall phpdoc/phpDocumentor
Спасибо deepdivedylan за ссылки. Однако composer require --dev phpdocumentor/phpdocumentor
не решило мою проблему. Но чтение ссылок и загрузка аннотаций к доктрине патч 1.2.5 работали нормально. Просто скачайте архив и замените папку поставщика/доктрины/аннотации ее содержимым.
Вы можете загрузить последнюю версию phar из выпусков github .
Ссылка с веб-сайта ведет на его более старую версию.