web-dev-qa-db-fra.com

PHPDocumentor 2 et PHP 7 avec des problèmes d'opcache dans la doctrine

J'espère que quelqu'un ici sait quelque chose ou deux à ce sujet.

Question courte

Je rencontre une erreur en utilisant phpdoc sur la ligne de commande, installée via pear sur PHP 7.0.2. L'erreur est:

#> 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

Comment puis-je corriger cette erreur?

Détails

Opcache est activé et opcache.load_comments=1 est dans mon fichier opcache.ini, vérifié à l'aide des commandes: php -i | grep "Opcode" et php -i | grep "opcache", respectivement. Dans ce fichier .ini, je peux vérifier que les modifications sont chargées en cochant les options Activer et Désactiver Opcache via ce fichier.

Cela dit, si j'ai opcache.load_comments=1 dans mon fichier .ini, pourquoi ai-je toujours cette erreur?

Merci!

13
Paul Carlton

J'ai rencontré le même problème lors de l'utilisation de la version PHAR de PHPDocumentor. Le PHAR comprend une version obsolète de Doctrine Annotations.

L'ancienne version d'Annotations fait référence au paramètre opcache.load_comments dans php.ini, qui n'existe pas dans PHP 7:

Cela a été corrigé en amont dans les annotations:

Pour l'instant, utiliser la version de composition de PHPDocumentor en exécutant composer require --dev phpdocumentor/phpdocumentor a résolu le problème pour moi.

14
deepdivedylan

Vous pouvez également utiliser composer sans changer manuellement le contenu du répertoire des fournisseurs. Il suffit d'utiliser:

composer require doctrine/annotations

avoir la dernière version de doctrine/annotations (au moins 1.2.5 résout le problème)

8
Grzegorz Krauze

phpDocumentor 2.8.5 est la version par défaut avec Ubuntu 16.04. Cependant, le support php7 n'a pas été ajouté avant la version 2.9. Je l'ai obtenu en utilisant les éléments suivants sur la ligne de commande:

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

Si vous avez installé phpDocumentor à partir de pear, utilisez ce qui suit pour le supprimer:

Sudo pear uninstall phpdoc/phpDocumentor
7
Robert Oldham

Merci deepdivedylan pour les liens. Cependant, composer require --dev phpdocumentor/phpdocumentor n'a pas résolu mon problème. Mais lire les liens et télécharger doctrine annotations patch 1.2.5 a bien fonctionné. Il suffit de télécharger l’archive et de remplacer le dossier vendor/doctrine/annotations par son contenu. 

4
Multis

Vous pouvez télécharger la dernière version de phar à partir de github releases .

Le lien du site Web est une ancienne version de celui-ci.

0
Hari K T