VS Codeの『php.validate.executablePath』警告を消すため、WindowsにPHPを最低限だけ入れる

WordPress

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.executablePathphp.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インストールコマンド

あるって聞いてたインストーラーが見つからないの!⇩

PHP: Downloads
PHP is a popular general-purpose scripting language that powers everything from your blog to the most popular websites i...

バイナリて書いてるの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"
}

コメント

タイトルとURLをコピーしました