VS Codeの拡張機能「PHP Server」でPHP Not Foundと表示されるのは、拡張機能がPHPの実行ファイルを見つけられないためです。PHPコードやプロジェクト内のファイルパスが原因とは限りません。
最初に次の3点を確認すると、ほとんどのケースを切り分けられます。
- VS Codeのターミナルで
php -vを実行する - PHP実行ファイルのフルパスを調べる
phpserver.phpPathへフルパスを設定し、VS Codeを再読み込みする
{
"phpserver.phpPath": "/opt/homebrew/bin/php"
}
上のパスはApple Silicon Macの一例です。そのままコピーせず、自分の環境で取得した結果を設定してください。
PHP Not Foundの原因
PHP Serverは、現在のworkspaceをPHPの内蔵Webサーバーで配信するVS Code拡張機能です。拡張機能の中にPHP本体は含まれていません。
公式Marketplaceでは、phpserver.phpPathが未設定の場合、拡張機能は環境変数PATHからPHP実行ファイルを探すと説明されています。したがって、主な原因は次のいずれかです。
- PHP CLIがインストールされていない
- PHPはあるが、VS Codeから見える
PATHに入っていない phpserver.phpPathにディレクトリやphp.iniを指定している- 設定した実行ファイルが移動・削除された
- Remote SSH、WSL、Dev Containerなど、別環境のVS Codeで実行している
PHP ServerのMarketplace公式ページで、現行のコマンドと設定名を確認できます。
最初にphp -vでインストール状態を確認する
VS Codeで「ターミナル」→「新しいターミナル」を開き、次を実行します。
php -v
バージョンが表示されれば、PHP CLIは実行できます。
PHP 8.x.x (cli) ...
command not found、php is not recognizedなどが出る場合は、PHPが未インストールか、PATHに登録されていません。先にPHPをインストールするか、既存の実行ファイルを探します。
PHP Serverが必要とするのはCLI版のPHP
ブラウザでMAMPやXAMPPの画面を開けても、VS CodeがPHP CLIの場所を自動で認識できるとは限りません。必要なのは、macOS・Linuxでは通常php、Windowsではphp.exeという実行ファイルです。
php.iniはPHPの設定ファイルであり、実行ファイルではありません。両者を混同しないでください。
PHP実行ファイルのフルパスを調べる
OSごとに次のコマンドを使います。
| 環境 | 確認コマンド | 出力例 |
|---|---|---|
| macOS / Linux | command -v php |
/opt/homebrew/bin/php |
| Windows PowerShell | (Get-Command php).Source |
C:\xampp\php\php.exe |
| Windows コマンドプロンプト | where php |
C:\php\php.exe |
macOSやLinuxではwhich phpでも確認できますが、shellの組み込み仕様を含めて意図が明確なcommand -v phpをここでは使います。
複数の結果が出る場合、VS Codeから使いたい版を決めてください。次のようにフルパスを直接実行すると、そのPHPの版を確認できます。
/opt/homebrew/bin/php -v
Windows PowerShellでは、取得したパスを呼び出し演算子&で実行できます。
& "C:\xampp\php\php.exe" -v
phpserver.phpPathを設定する
PHP実行ファイルのフルパスが分かったら、PHP Server固有の設定phpserver.phpPathへ指定します。
設定画面から入力する
- コマンドパレットを開く
Preferences: Open User Settingsを実行する- 検索欄へ
@id:phpserver.phpPathと入力する - 「Phpserver: PHP Path」へ実行ファイルのフルパスを入力する
macOSはCommand + ,、Windows・LinuxはCtrl + ,でもSettings Editorを開けます。メニュー名はOSやVS Codeの表示言語で変わるため、コマンドパレットから設定名を検索する方法が確実です。
settings.jsonへ直接書く
コマンドパレットからPreferences: Open User Settings (JSON)を実行し、設定を追加します。
{
"phpserver.phpPath": "/opt/homebrew/bin/php"
}
既に別の設定がある場合は、直前の項目との間にカンマが必要です。JSONの波括弧を二重に作らないようにします。
WindowsのJSONでは、バックスラッシュを2個書きます。
{
"phpserver.phpPath": "C:\\xampp\\php\\php.exe"
}
入力する値はC:\xampp\phpというフォルダではなく、末尾がphp.exeのファイルです。
User設定とWorkspace設定のどちらに書くか
VS Codeには、すべてのprojectへ適用するUser設定と、現在のworkspaceだけへ適用するWorkspace設定があります。Workspace設定は通常.vscode/settings.jsonへ保存され、同じキーがあればUser設定より優先されます。
| 設定範囲 | 向いている状況 | 注意点 |
|---|---|---|
| User | 自分のPCで常に同じPHPを使う | 個人の絶対パスをprojectへ残さない |
| Workspace | projectごとにPHPの場所を切り替える | 共有すると他メンバーのパスでは動かない場合がある |
個人のホームディレクトリを含む絶対パスは、通常User設定へ置くほうが扱いやすいです。teamで.vscode/settings.jsonを共有する場合は、個人固有のパスをcommitしない設計も検討してください。
設定後にVS Codeを再読み込みする
PATHや設定を変更した後、既に起動しているVS Codeプロセスへ変更が反映されないことがあります。コマンドパレットから次を実行します。
Developer: Reload Window
その後、PHPファイルを開き、次のいずれかでサーバーを起動します。
- コマンドパレットの
PHP Server: Serve project - PHPまたはHTMLファイル上の右クリックメニュー
- エディタ右上のPHP Serverボタン
停止はPHP Server: Stop project、設定変更後の再起動はPHP Server: Reload serverです。既定ではlocalhost:3000を使用します。
macOSでPHPが見つからない場合
現在のmacOSには、開発用PHP CLIが常に最初から入っているとは限りません。Homebrewを使う場合は、特定の古い版を決め打ちせず、まずサポート中のPHPを導入します。
brew update
brew install php
php -v
command -v php
Homebrewの標準prefixは、Apple Siliconでは/opt/homebrew、Intel Macでは/usr/localです。ただし、実際の実行ファイルは必ずコマンド結果で確認してください。
brew --prefix php
brew list php | grep '/bin/php$'
command -v phpでパスが出るのに拡張機能だけ失敗する場合、VS Codeを完全終了して開き直すか、phpserver.phpPathへフルパスを明示します。
古いPHP 7.4を入れ直す前に確認する
PHP 7.4はサポート終了済みです。PHP公式では各release branchにサポート期間があり、終了した版は未修正の脆弱性を含む可能性があるため更新が推奨されています。
既存projectの都合で古い版が必要なら、OS全体のPHPを強制的にlinkするより、Dockerなどproject単位で版を固定するほうが衝突を避けやすくなります。PHP Serverのエラー解消だけを目的に、EOL版を新規導入しないでください。
WindowsでPHPが見つからない場合
PowerShellでまず確認します。
php -v
(Get-Command php).Source
XAMPPを既定場所へ入れた環境ではC:\xampp\php\php.exeにあることが多いものの、install先を変えていればパスも変わります。File Explorerで実在を確認するか、PowerShellで直接テストします。
Test-Path "C:\xampp\php\php.exe"
& "C:\xampp\php\php.exe" -v
PATHへPHPのフォルダを追加した場合は、VS Codeとterminalを開き直します。PATHを変更せず、phpserver.phpPathにphp.exeのフルパスを設定しても構いません。
Linux・WSLでPHPが見つからない場合
Linuxでは、使用中のdistributionが提供するpackage managerでPHP CLIを導入します。Ubuntu・Debian系の基本例は次のとおりです。
sudo apt update
sudo apt install php
php -v
command -v php
Fedora系などではコマンドが異なります。PHP公式のDownloads & Installation InstructionsでOSとversionを選び、現在の案内を確認してください。
WSL拡張機能で開いたVS Code windowは、Windows側ではなくWSL側で拡張機能とPHPを実行します。WindowsのC:\xampp\php\php.exeを指定するのではなく、WSL内でcommand -v phpを実行して取得したLinux pathを設定します。
Remote SSH・Dev Containerでは実行環境を確認する
VS Codeの左下にSSH:、WSL:、Dev Container:などが表示されている場合、ローカルPCとは別の環境を操作しています。
- Remote SSH: 接続先serverにPHP CLIが必要
- WSL: WSL distribution内にPHP CLIが必要
- Dev Container: container image内にPHP CLIが必要
ターミナルでphp -vとcommand -v phpを実行し、そのterminalがどの環境かを確認してください。PHP Server拡張機能もRemote側へinstallされている必要があります。
それでも直らないときのチェックリスト
上から順に確認します。
phpserver.phpPathのファイルが実在するか- フォルダではなく
phpまたはphp.exeを指定したか - フルパスへ
-vを付けて直接実行できるか - WindowsのJSONで
\を\\と書いたか - Workspace設定がUser設定を上書きしていないか
Developer: Reload Windowを実行したか- Remote・WSL・containerの正しい側へPHPを入れたか
- PHP Serverを一度停止してから再起動したか
VS CodeのSettings検索へ@modified phpserverと入力すると、変更済みのPHP Server設定を絞り込めます。古いpathがWorkspace側に残っていないか確認してください。
Permission deniedになる場合
PHP Not Foundが消えた後にPermission deniedが出るなら、探索ではなく実行権限の問題です。macOS・Linuxでは次で権限を確認します。
ls -l "$(command -v php)"
"$(command -v php)" -v
package managerで正常にinstallしたPHPの権限を、理由なくchmod 777へ変更しないでください。壊れたinstallならpackage managerで再installするほうが安全です。
port 3000が使用中の場合
PHP実行ファイルが見つかった後、別のprocessがport 3000を使用しているとserverを起動できません。この場合はphpserver.portを変更します。
{
"phpserver.phpPath": "/opt/homebrew/bin/php",
"phpserver.port": 8080
}
これはPHP Not Foundとは別のエラーです。通知やOutput panelに表示されたmessageを分けて確認します。
似たPHP設定との違い
設定名が似ていますが、役割は異なります。
| 設定 | 対象 | 値 |
|---|---|---|
phpserver.phpPath |
PHP Server拡張機能 | PHP実行ファイル |
phpserver.phpConfigPath |
PHP Server拡張機能 | php.iniファイル |
php.validate.executablePath |
VS CodeのPHP validation | PHP実行ファイル |
php.validate.executablePathだけを設定しても、PHP Serverが同じ値を必ず使うわけではありません。PHP Serverの通知なら、まずphpserver.phpPathを確認します。
また、PHPコード内のrequireやincludeでファイルが見つからない問題は別です。コード内の相対・絶対パスはPHPのパス指定と__DIR__・__FILE__の使い方で解説しています。
拡張機能を使わずPHP内蔵サーバーを起動する
問題の切り分けには、terminalからPHP内蔵Webサーバーを直接起動する方法も有効です。project rootで次を実行します。
php -S localhost:8000
公開directoryがpublicの場合は-tでdocument rootを指定できます。
php -S localhost:8000 -t public
これが動けばPHP CLI自体は正常で、PHP Server側のpath・scope・Remote環境に問題がある可能性が高いと判断できます。停止はterminalでCtrl + Cです。
PHP公式は内蔵Webサーバーをapplication開発、test、制御されたdemonstration向けと位置付け、public networkで使わないよう注意しています。本番環境はApache、Nginx、PHP-FPMなど適切な構成を使ってください。
PHP Serverの設定例
開発用の最小例です。
{
"phpserver.phpPath": "/opt/homebrew/bin/php",
"phpserver.ip": "localhost",
"phpserver.port": 3000,
"phpserver.relativePath": "."
}
front controllerが必要なprojectではphpserver.routerを使えますが、router scriptの仕様はframeworkごとに異なります。まずは単純なindex.phpで起動を確認してから追加してください。
VS Code操作を効率化したい場合は、VS Codeでキーボードショートカットを変更する方法とVS Codeでスニペットを登録する方法も参照できます。
よくある質問
phpPathにはフォルダを指定しますか?
いいえ。macOS・Linuxなら/opt/homebrew/bin/phpのような実行ファイル、WindowsならC:\xampp\php\php.exeのようなphp.exeまで指定します。
php.iniの場所も設定する必要がありますか?
通常は不要です。PHP Serverはphpserver.phpConfigPathが空なら既定の設定を使います。使用中のPHPが読む設定はphp --iniで確認できます。特定のphp.iniが必要な場合だけ設定します。
terminalではphp -vが動くのに、PHP Serverだけ失敗します
VS Codeの再読み込み、User / Workspace設定の優先順位、Remote環境を確認してください。確実に切り分けるにはcommand -v phpまたは(Get-Command php).Sourceの結果をphpserver.phpPathへ明示します。
php.validate.executablePathを設定すれば直りますか?
PHP ServerのPHP Not Foundには、PHP Server自身のphpserver.phpPathを設定します。validation用設定とは用途が別です。
PHP 7.4をinstallすれば直りますか?
エラーの原因は特定versionではなく、PHP実行ファイルを見つけられないことです。PHP 7.4はサポート終了済みなので、新規学習環境ではPHP公式のSupported Versionsを確認し、サポート中の版を選んでください。
まとめ
PHP Not Foundは、PHP Server拡張機能がPHP CLIの実行ファイルを見つけられないときに起こります。
php -vでPHPの有無を確認する- OSに合ったコマンドで実行ファイルのフルパスを取得する
phpserver.phpPathへファイルまで指定する- VS Codeを再読み込みし、
PHP Server: Serve projectを実行する
直らない場合は、Workspace設定による上書きとRemote・WSL・Dev Containerの実行場所を確認します。拡張機能を使わずphp -S localhost:8000が動くか試すと、PHP本体と拡張機能のどちらに原因があるか切り分けられます。