Visual Studio Code PHP Intellisenseが上手く動作しない場合の確認事項

Visual Studio Code PHP Intellisenseが上手く動作しない場合の確認事項

VSCodeの拡張機能のphp-intellisenseはインストールはしたものの上手く動かないケースがあります。よくある確認箇所について紹介します。

そもそも動作してる?

php-intellisenseは拡張機能からインストールしただけでは動作しません。
まずは動作しているかどうかを明確に確認するには、PHPプロジェクトのディレクトリをVSCodeで開きます。
出力エリアを開き、PHP Language Serverの出力内容を確認すると、プロジェクト内のPHPファイルのインデックスが作成されていくログが表示されます。

PHP Language Serverのタブが表示されない場合

php-intellisenseは拡張機能を入れるだけでは動作しません。
動かすにはまず、PHP7のVSCodeの設定「php.executablePath」に対してPHP7の実行ファイルのパスをセットする必要があります。
PHP7は別途ダウンロードし、ローカルの任意の場所に保存して下さい。

次に、PHP Language Serverをインストールします。
これは拡張機能ではなくプロトコルなのでVSCodeの拡張機能をいくら探しても見つかりません。
Composerから以下のコマンドを実行してPHP Language Serverをインストールします。
composer require felixfbecker/language-server

■PHP Language Server
https://github.com/felixfbecker/php-language-server

それでも動かないときは

ワークスペースのディレクトリにネットワークフォルダを指定していませんか?
php-intellisenseはファイル探索にglob関数を使っているため、\から始まるネットワークフォルダは読み込むことが出来ません。
回避策として、ネットワーク場所を一度マウントしてドライブパスを割り当てた状態で読み込むことでネットワークフォルダにあってもphp-intellisenseの対象ディレクトリとして読み込むことが出来ます。

一部のファイルだけ読み込めないときは

php-intellisenseのソースを直接確認すると、対象ファイルの特定は拡張子が.phpのファイルのみとなっています。
PHPでは.incなどの拡張子もPHPファイルとして扱うプロジェクトがあるため、.incファイルだけ読み込まれないといった場合は直接php-intellisenseのソースを編集して読み込み対象のファイルの拡張子に.incを追加する必要があります。

以下のファイル内で「.php」と指定されている箇所について、「.{php,inc}」に変更することでincファイルも対象に含めることが出来ます。
C:\Users\[user]\.vscode-insiders\extensions\felixfbecker.php-intellisense-[version]\vendor\felixfbecker\language-server\src\ComposerScripts.php

C:\Users\[user]\.vscode-insiders\extensions\felixfbecker.php-intellisense-[version]\vendor\felixfbecker\language-server\src\Indexer.php

容量の大きいファイルが読み込まれない場合は?

プログラミングカテゴリの最新記事