web-dev-qa-db-ja.com

PHPDocumentor 2とPHP 7 Doctrine

うまくいけば、ここの誰かがこれについて1つか2つ知っています。

短い質問

PHP 7.0.2にpearを介してインストールされたコマンドラインでphpdocを使用してエラーが発生しています。エラーは次のとおりです:

#> 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ファイルで、なぜまだこのエラーが発生するのですか?

ありがとう!

14
Paul Carlton

PHPDocumentorのPHARバージョンを使用しているときに同じ問題が発生しました。 PHARには、廃止されたDoctrine注釈のバージョンが含まれています。

古いバージョンの注釈はopcache.load_commentsphp.ini設定を参照しており、PHP 7:

これはアノテーションの上流で修正されました:

現時点では、composerバージョンのPHPDocumentorをcomposer require --dev phpdocumentor/phpdocumentorを実行して使用すると、問題が解決しました。

16
deepdivedylan

composerを使用して、ベンダーディレクトリのコンテンツを手動で切り替えることなく使用することもできます。

composer require doctrine/annotations

doctrine/annotationsの最新バージョンを入手する(少なくとも1.2.5で問題が解決します)

8
Grzegorz Krauze

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
7
Robert Oldham

リンクを提供してくれたdeepdivedylanに感謝します。しかしながら、 composer require --dev phpdocumentor/phpdocumentorは私の問題を解決しませんでした。しかし、リンクを読んでダウンロード doctrineアノテーションパッチ1.2.5 はうまくいきました。アーカイブをダウンロードして、vendor/doctrine/annotationsフォルダーをそのコンテンツで置き換えます。

4
Multis

Pharの最新バージョンは github release からダウンロードできます。

ウェブサイトからのリンクは、それより古いバージョンです。

0
Hari K T