Visual Studio CodeがPHP入れてくれって言ってくる
ずっと無視してたVS CodeのPHP警告
Visual Studio Code(以下VS Code)でPHPを作業すると出てくるPHPのパス通ってないぞ!てエラー
PHP 実行可能ファイルが設定されていないため、検証できません。 設定 'php.validate.executablePath' を使用して PHP 実行可能ファイルを構成してください。
※当方、日本語化するのも面倒で、英語で出ていたんだけど、メモし忘れた
正直、PCではdocker内部でしかPHP使ってないからね
「Windowsまで入れる必要あるかなー?」
「PHPの編集・加工後、すぐにローカルサーバで確認するし、要るか?」
て気持ちで無視していた
…んだけどねぇ…
そもそもVS CodeのためにPHPは必要か?
そのままでもコードは書けるが、VS Code上で「構文エラー(シンタックスエラー)」をリアルタイムで教えてくれなくなるらしい。
つまり、ブラウザで表示して「Error」が出るまでミスに気づけない効率の悪い開発を強いることになる。
例えばセミコロン(;)を忘れても、VS Codeは静かに見守るだけになる。
そしてDockerを立ち上げ、ブラウザをリロードして、真っ白な画面を見て焦って、なんやかんやしてから「あ、セミコロン!」と気づく。
まぁ、その状態で困ってなかったから入れてなかったんだけど、
でも確かに最近、ちょっとしたミスで「原因どこだ?」て●時間も戦ったところだったので
「ここ書き方間違ってまっせ!」
て、ツール側でチェックしてくれるっていうなら、それに越したことはない。
結論:リアルタイムでエラーを報告して欲しいなら入れるべし
と重い腰を上げたのだった。
インストール方法は主に2つ
Dev Containers を使う
Docker環境で開発しているなら、これが一番ラクらしい。
VS CodeごとDockerコンテナの中に入り込んで開発する手法。
コンテナ内のPHPを直接使うので、設定不要でバリデーションもインテリセンスも完璧に動く。
ただ「サーバ起動しないときもあるんだよなぁ…」て話。
やり方
拡張機能「Dev Containers」を入れ、左下の「><」マークからコンテナを開くだけ。
ローカルに「PHPバイナリ」だけ入れる
「コンテナの中に入るのは面倒だ」という派は、Windows側にPHPを入れる。
VS CodeのPHPバリデーションは、単に「PHPの実行ファイルを使って、コードが文法的に正しいかチェックしている」だけなので軽量でOK。
OSがWindowsなら php.exe を、Macなら php をどこかにダウンロードして、そのパスを php.validate.executablePath に指定するのだ。
結論:めんどくさいからWindowsにPHP入れよ
というわけで、ココから最低限のインストール方法を記録しますね!
WindowsにPHPインストール方法
【ココだけで解決】脳を使わず一気出し
Windows Power Shellで作業する。
| 項目 | 設定値 / 解説内容 |
|---|---|
| アーキテクチャ | x64(確認方法:Win + Pause) |
| スレッドセーフ | Thread Safe (TS)(VS Codeのバリデーション用ならこれ一択) |
| タイムゾーン | Asia/Tokyo(デフォルトUTCだと時間がズレる罠) |
| 対象ユーザ | 1(Current user) |
| VS Code設定項目 | php.validate.executablePath(php.exe までのフルパス) |
コマンド画面は、こんな感じ。
PS C:\Windows> # Download and install PHP. PS C:\Windows> powershell -c "& ([ScriptBlock]::Create((irm 'https://www.php.net/include/download-instructions/windows.ps1'))) -Version 8.5" What architecture would you like to install? Enter x64 for 64-bit Enter x86 for 32-bit Press Enter to use default (x64) Please enter [x64/x86]: x64 What ThreadSafe option would you like to use? Enter true for ThreadSafe Enter false for Non-ThreadSafe Press Enter to use default (False) Please enter [true/false]: true What timezone would you like to set in php.ini? Press Enter to use default (UTC) Please enter timezone: Asia/Tokyo Would you like to install PHP for: Enter 1 for Current user Enter 2 for All users (requires admin elevation) Enter 3 to install PHP at a custom path Press Enter to choose automatically Please enter [1-3]: 1
ちょっと待ってればインストールされる。
あとは VS Code が出してきた settings.json に
インストールされたPHPの中に『php.exe』があるので、そのパスを書く。
例としてこんな感じ⇩
{
"php.validate.executablePath": "C:/Users/【ユーザ名】/AppData/Local/Programs/PHP/8.5.3/ts/x64/php.exe"
}
コレで動くので、考えなくてもOK。
では細かく知りたい人のための解説を以下に。
【知りたい人用】各コマンド解説
PHPインストールコマンド
あるって聞いてたインストーラーが見つからないの!⇩

バイナリて書いてるの1回落としたんだけど、exeないしよくわからんの!(英語読め)
なので、シングルラインインストーラーでボーン!することにした。
powershell -c "& ([ScriptBlock]::Create((irm 'https://www.php.net/include/download-instructions/windows.ps1'))) -Version 8.5"
What architecture would you like to install?:アーキテクチャ
基本的に『x64』。
今の時代に『x86(32bit)』PCの方が珍しいので。
ちゃんと調べたいなら
画面左下の■4つ並べたWindowsマークを右クリック➔『設定』➔『システムの種類』
『x64』が含まれていたら『x64』を選ぶ感じ
What ThreadSafe option would you like to use?:スレッドセーフ
VS Codeのバリデーション用(単体で動かす用)なら『true』(Thread Safe)。
Thread Safe(TS)は、複数の処理を同時に走らせる仕組み(マルチスレッド)の上で動くことを想定している。
VS CodeをWindows環境でPHPを単体(CLI)で動かしてチェックに使う場合、Thread Safe版の方が安定しているのが通例なんだとか。
What timezone would you like to set in php.ini?:タイムゾーン
日本ならば『Asia/Tokyo』
Would you like to install PHP for:対象ユーザ
『1』(Current user)で十分。
「1」なら管理者権限(Admin)が不要。
「2」を選ぶと、Windowsから「変更を許可しますか?」と何度も聞かれるんだとか。
自分しか使わないPCなら、わざわざ全体(All users)に広げる必要はない。
VS Codeは「自分(Current user)」として動いている。
自分の権限でアクセスできる場所にPHPがあれば、それだけでバリデーションは動くので、目的を果たすだけなら「1」でいいわけだ。
また「1」ならアンインストール・移動の点でもメリットがあるとか。
自分ののユーザーディレクトリ内に収まるので、OSの深い場所を汚さずに済むそうな。
settings.json
VS Code が出してきた settings.json。
大体 C:\Users\【ユーザ名】\AppData\Roaming\Code\User にある。
インストールされたPHPの中に『php.exe』があるので、そのパスを書く。
大体こんな感じ⇩
{
"php.validate.executablePath": "C:/Users/【ユーザ名】/AppData/Local/Programs/PHP/8.5.3/ts/x64/php.exe"
}
コメント