【vscode】Docker環境にてPHPが参照できない問題を解消

VisualStudioCode にてPHPのエラー

ある日、突然 vscode が動かなくなるという恐ろしい症状に出くわしました。(業務では PHPStorm を使用しているので、vscode の勝手があまりわからない。。。)

PHP executable not found. Install PHP and add it to your PATH or set the php.debug.executablePath setting

「PHPの実行ファイルがねーぞ!」というエラー文言、 Docker にて環境構築をしている事が原因あろうと想像つきます。

注意

後から知ったんですけど、Dockerにて環境構築を行っていたとしても
ローカルにPHPがインストールされている && vscode にパスが通っている場合はエラーは出ないっぽいです。
今動けば良いという人はローカルにインストールとパスを通せば動くと思います!

PHPコンテナへのパスを追加する

仕事のできる先輩へ相談したところ、すぐに返事をもらえました。

先輩

コンテナへのパスを定義するだけで解決すんでー

 

それだけで解決するわけ無いだろ!って思ったんですけど大人しく従ってみることにしました。

 

手順1:プロジェクト固有の設定ファイルを定義する準備

vscode にはプロジェクト単位で設定ファイルを作成することができます(知らんかった…

プロジェクトの第一階層に .vscode というディレクトリを切りましょう。

Tips

まじで知らなかったんですけど、 vscode のドキュメントはかなり充実しています。
時間ある人は読んでみると良いかもです。
ドキュメント

手順2:コンテナへのパスを定義しよう

プロジェクト固有のディレクトリの中にPHPが動作しているコンテナへのパスを書いたshellファイルを定義しましょう。

こんな感じ↓

docker exec -it `コンテナ名` php $@
docker exec docker exec コマンドは、実行中のDockerコンテナ内でコマンドを実行するために使用されます。
-it -it は二つのオプションの組み合わせです。

  • -i (--interactive) はコンテナの標準入力を開いた状態に保つ
  • -t (--tty) は仮想ターミナルインターフェイスを割り当てます。
$@ $@はシェルスクリプトにおける特別な変数で、すべての位置パラメータを表します。スクリプトに渡されたすべての引数をphpコマンドに渡します。

手順3:vscode の設定ファイルを定義しよう

プロジェクト固有のディレクトリの中に settings.json というファイルを定義しましょう。

vscode 本体に設定することも可能なんですけど、一つのプロジェクトしか触らないというエンジニアは居ないと思うので、プロジェクト固有の設定を記述していきましょう。

設定ファイルの中身はこんな感じ↓

{
    // 手順2で作成したシェルファイルを定義
    "php.debug.executablePath": "./container-php.sh"
}

ちなみにファイル名が「setting.json」だとvscodeが認識してくれません!
「settings.json」というファイル名してくださいね!

 

先輩に感謝

先輩にコーヒーとタバコをおごりました。

感謝致します。

 

Twitterでフォローしよう

読んでみーな
おすすめの記事