PHP

VS Code「PHP Not Found」の直し方|PHP ServerのphpPath設定

VS Code拡張機能PHP Serverで「PHP Not Found」と表示される原因と直し方を解説します。PHPのインストール確認、macOS・Windows・Linuxで実行ファイルを探す方法、phpserver.phpPathの設定、PATHやRemote環境の切り分けまで順番に確認できます。

この記事の目次
  1. PHP Not Foundの原因
  2. 最初にphp -vでインストール状態を確認する
  3. PHP Serverが必要とするのはCLI版のPHP
  4. PHP実行ファイルのフルパスを調べる
  5. phpserver.phpPathを設定する
  6. 設定画面から入力する
  7. settings.jsonへ直接書く
  8. User設定とWorkspace設定のどちらに書くか
  9. 設定後にVS Codeを再読み込みする
  10. macOSでPHPが見つからない場合
  11. 古いPHP 7.4を入れ直す前に確認する
  12. WindowsでPHPが見つからない場合
  13. Linux・WSLでPHPが見つからない場合
  14. Remote SSH・Dev Containerでは実行環境を確認する
  15. それでも直らないときのチェックリスト
  16. Permission deniedになる場合
  17. port 3000が使用中の場合
  18. 似たPHP設定との違い
  19. 拡張機能を使わずPHP内蔵サーバーを起動する
  20. PHP Serverの設定例
  21. よくある質問
  22. phpPathにはフォルダを指定しますか?
  23. php.iniの場所も設定する必要がありますか?
  24. terminalではphp -vが動くのに、PHP Serverだけ失敗します
  25. php.validate.executablePathを設定すれば直りますか?
  26. PHP 7.4をinstallすれば直りますか?
  27. まとめ

VS Codeの拡張機能「PHP Server」でPHP Not Foundと表示されるのは、拡張機能がPHPの実行ファイルを見つけられないためです。PHPコードやプロジェクト内のファイルパスが原因とは限りません。

最初に次の3点を確認すると、ほとんどのケースを切り分けられます。

  1. VS Codeのターミナルでphp -vを実行する
  2. PHP実行ファイルのフルパスを調べる
  3. 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 foundphp 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へ指定します。

設定画面から入力する

  1. コマンドパレットを開く
  2. Preferences: Open User Settingsを実行する
  3. 検索欄へ@id:phpserver.phpPathと入力する
  4. 「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.phpPathphp.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 -vcommand -v phpを実行し、そのterminalがどの環境かを確認してください。PHP Server拡張機能もRemote側へinstallされている必要があります。

それでも直らないときのチェックリスト

上から順に確認します。

  1. phpserver.phpPathのファイルが実在するか
  2. フォルダではなくphpまたはphp.exeを指定したか
  3. フルパスへ-vを付けて直接実行できるか
  4. WindowsのJSONで\\\と書いたか
  5. Workspace設定がUser設定を上書きしていないか
  6. Developer: Reload Windowを実行したか
  7. Remote・WSL・containerの正しい側へPHPを入れたか
  8. 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コード内のrequireincludeでファイルが見つからない問題は別です。コード内の相対・絶対パスは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の実行ファイルを見つけられないときに起こります。

  1. php -vでPHPの有無を確認する
  2. OSに合ったコマンドで実行ファイルのフルパスを取得する
  3. phpserver.phpPathへファイルまで指定する
  4. VS Codeを再読み込みし、PHP Server: Serve projectを実行する

直らない場合は、Workspace設定による上書きとRemote・WSL・Dev Containerの実行場所を確認します。拡張機能を使わずphp -S localhost:8000が動くか試すと、PHP本体と拡張機能のどちらに原因があるか切り分けられます。