PHP Intellisense で定義への移動ができなくなったときに

2020年2月11日火曜日

PHP Visual Studio Code VSCode

t f B! P L

最初に

現在私は PHP Intelephense を使用していますが、以前 PHP Intellisense を使用していたときに調べた内容を記載します。
以前はQiitaに載せていましたがこちらのブログを開始するにあたり、移動させました。
PHP Intelephense では下記のようなエラーもなく定義への移動ができています。
一度試してみることをおすすめします。

背景

VSCode使用時に特定のプロジェクトだけ、拡張機能の PHP Intellisense で定義の表示・移動ができず原因の特定に時間がかかりましたので、その原因と解決方法を記載しておきます。

原因

調べていると、 PHP Intellisense はプロジェクト読み込み時に定義を再読込しており、以下の出力が出ていました。

Ignoring file file:///d:/hoge/fuga/_ide_helper.php because it exceeds size limit of 150000 bytes (448485)

出力のとおり、ファイルサイズがリミットの 150,000B = 150KBを超えるファイルがあると定義の読み込みを飛ばしてしまう為、定義の表示・移動ができなくなっていたようです。
PHPのフレームワークとしてLaravelを使用しており、その一部ファイルがリミットを超えていました。

解決方法

ホームディレクトリの以下ファイルを変更することで対応することができました。
私の場合は、リミットを `150000` から `1500000` に変更することで現在は問題なく動作しております。

.vscode\extensions\felixfbecker.php-intellisense-2.3.10\vendor\felixfbecker\language-server\src\PhpDocumentLoader.php
PhpDocumentLoader.php
...
105    public function load(string $uri): Promise
106    {
107        return coroutine(function () use ($uri) {
108
109            $limit = 1500000; // ここを変更 150000 -> 1500000 = 1.5MB
110            $content = yield $this->contentRetriever->retrieve($uri);
111            $size = strlen($content);
112            if ($size > $limit) {
113                throw new ContentTooLargeException($uri, $size, $limit);
114            }

ただし

上記対応をした場合でもアップデートなどで元の状態にもどってしまうことがありますので再度対応の必要があります。

このブログを検索

QooQ