VS Codeをphpエディタとして使用してみたのでそのメモ。
Visual Studio Codeのインストール方法や日本語化は、こちら。
使用した VSCode は Version: 1.45.0。
phpの開発環境の設定
MicrosoftのWEBページを参考にPHP開発環境を構築してみた。
https://code.visualstudio.com/docs/languages/php
ここではWindowsにインストールする手順を記載します。
Linuxでは、設定ファイル(httpd.conf、php.ini)の記載などがことなるので、リンク先のドキュメントを参考にしてください。
PHPのインストール
はじめに、PHPをインストールする。
PHPは、公式サイト「https://www.php.net/downloads.php」からダウンロードしてインストールできる。
スレッドセーフ版とNonスレッドセーフ版があるが、これは運用環境に合わせてダウンロードすればよい。
今回は、WEBサーバでHTTPリクエスト毎にスレッドを生成して処理する(リクエストごとにプロセスを生成しない)ことを想定して、スレッドセーフ版をダウンロードした。
HTTPリクエスト毎にプロセスを生成して処理する場合は、Nonスレッドセーフ版でOK。
PHPバージョンはいくつかリリースされているが現時点(2020/5)で最新の 7.4.6 をインストールする。
公式サイトで、「Current Stable PHP 7.4.6 (Changelog) 」の「Windows downloads」をクリック。
つぎに、「VC15 x64 Non Thread Safe (2020-May-12 15:28:31)」の「zip」をクリック。
ダウンロードしたzipを展開して、適当なフォルダ(c:\php、など)にコピーする。
複数のphpのバージョンを同時に使う予定があれば、バージョンを含めて「c:\php-7.4.6\php.exe」でも良さそう。
VSCodeのPHPの設定
VSCodeではPHPが標準でサポートされているので、好み?に合わせて設定を変更する。
設定するのは下記の3つ。
- php.validate.enable
PHPの構文チェックを有効/無効の設定。デフォルトでは有効。
- php.validate.executablePath
PHP実行ファイルのパスを設定する。(PHP実行ファイルがシステムパスにないときは設定が必須)
- php.validate.run
保存やタイプのタイミングで構文チェックを行うかの設定。デフォルトでは保存時に実施。
PHPに関する設定が表示されるので、上記3つを設定する。
「php.validate.executablePath」は設定ファイル(json形式)の編集になる。
"php.validate.executablePath"の値にphp.exeファイルのパスを記載する。
php.exeが"c:/php/php.exe"の場合は下記の通り。
{ "php.validate.executablePath": "c:/php/php.exe" }
PHPのコードスニッペの設定
VSCodeにはPHPのコードスニッペが含まれているとのこと。
[Ctrl]+[Space]で候補が表示されるので、特別な設定は不要。
そのほかのVSCode拡張機能
VS Code Marketplaceには多くの PHP extention が公開されている。
Extentions 画面(Ctrl+Shift+x)で検索できる。
いろいろな extention があるが、選択の目安としては、PHPロゴがPHPの公式サイトと同じかどうか、と思います。少し変形したロゴもあるので要確認。
おすすめは下記の extention。
- PHP IntelliSense(felixfbecker.php-intellisense)
このextetionを使用するときはVSCodeの機能と重複するので、VSCodeの「php.suggest.basic」は「false」に設定します。
- PHP Debug(felixfbecker.php-debug)
デバッグに必要なのでインストールする。
phpのデバッグ環境の設定
Extention の PHP Debug(felixfbecker.php-debug)をインストールする。
PHPのデバッグには Xdebug が必要とPHP Debug extentionに記載がある。
PHP Debug extentionの説明文にあるリンク(https://xdebug.org/docs/install)をクリックしてXdebugのサイトからインストールする。
インストールしているPHPバージョン等によって、ダウンロードするDLLが異なるようなので、
インストラクションページ(https://xdebug.org/wizard)からダウンロードするのが良いらしい。
HTML形式のphpinfo()の出力をインストラクションページ(上図の箇所)にペーストして、「analyse my phpinfo() output」ボタンをクリックする。
HTML形式でなくてもコマンド形式の出力結果をペーストもOK。
この場合は、コマンドプロンプトを開いて「php.exe -i」を実行する。
コマンドプロンプトのタイトルバーで右クリックして[編集]-[すべて選択]を選択。
コマンドプロンプトの出力が選択状態になるので、Enterキーを押下。これでクリップボードにコマンドプロンプトの出力をコピーできる。
後はインストラクションページのテキストエリアで、ctrl+vでペーストして、「analyse my phpinfo() output」ボタンをクリックする。
インストラクションページにXdebugライブラリのダウロードのリンクが表示されるので、リンクをクリックしてDLLをダウンロードして、画面に記載されているフォルダに配置する。
上記画面イメージでは「php_xdebug-2.9.5-7.2-vc15-x86_64.dll」をクリックしてDLLをダウンロード。
ダウンロードしたDLLを「C:\php\ext」フォルダに移動。
php.exeと同じフォルダにあるphp.iniの最終行に下記を追加。
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
Apache WEBサーバの設定
PHPの開発ツールの設定は完了したので、次にWEBサーバ側を設定する。
WEBサーバはapache HTTP Serverを使用する。
Windowsのapache HTTP Serverバイナリは、Apache Lounge(https://www.apachelounge.com/download/)からダウンロードできる。
ページの「Apache 2.4.43 Win64」からzipをダウンロードして展開する。
展開したフォルダ「Apache24」をドライブにコピーして、「c:\Apache24」になるようにする。
配置するフォルダを「c:\Apache24」以外にする場合は、設定ファイル「\Apache24\conf\httpd.conf」内の
パスの区切り文字はバックスラッシュ[\]ではなく、スラッシュ[/]。
サーバのポート番号は80番になっているので、変更するときはhttpd.confファイルの、
VirtualHostを使用する設定もあるが今は使わない。
複数ポートをListenしている場合やホスト名でDocumentRootを分けたい場合はVirtualHostを使用する。 詳しくは、Apache HTTP serverのドキュメントを参照。
次にApacheでPHPを処理できるように設定する。
phpのモジュールを有効にするので、httpd.confに下記を追加する。
LoadModule php7_module C:/php/php7apache2_4.dll
「php7apache2_4.dll」は、phpに同梱されているので、そのパスを記載する。
次にPHPモジュールに関連付けるファイルを設定する。
<IfModule php7_module> PHPIniDir "c:/php" </IfModule> <IfModule mime_module> AddType text/html .php </IfModule> <FilesMatch "\.php$"> SetHandler application/x-httpd-php </FilesMatch>
ここで、PHPIniDirはphp.iniファイルのあるフォルダを指定する。
AddTypeは、拡張子phpのURLを表示するときにhtmlを返すための設定、SetHandlerは、拡張子phpのファイルをPHPモジュールで処理するための設定。
apacheでPHPを表示するためのはこれで完了。
phpファイルが処理されるかを確認してみる。
DocumentRootで指定しているフォルダに、ファイル「hello.php」のファイルを作成する。
ファイルの内容は下記。
<?php phpinfo(); ?>
apacheを再起動してWEBブラウザで「http://localhost/hello.php」を表示する。
下図のようなPHPの情報が表示されれば設定は成功。
ApacheでPHPのデバッグをする
hello.phpにブレイクポイントを設定してみよう。
WEBブラウザでhello.phpを表示したときにブレイクしてみる。
VS Codeでデバッグするファイルを含むドキュメントルートを表示する。
hello.phpのあるドキュメントルートは「C:\apache24\htdocs」なので、VS Codeで表示する。
左のデバッグアイコンをクリックする。
XDebugを起動したいので新しい設定を作成する。
「create a launch.json file」をクリック。
「create a launch.json file」が表示されないときは、jsonファイルに直接下記を追加してもOK。
{ "type": "php", "request": "launch", "name": "Listen for XDebug", "port": 9000 }
一覧で「PHP」をクリックする。
XDebugのポートを変更する場合は、jsonファイルを変更するが、今回はデフォルトの9000番のため変更しなくても大丈夫なので、そのままにする。
左上のリストボックスで「Listen for XDebug」を選択して、リストボックスの左の実行アイコンをクリックする。
これで、apacheからの通知を待っている状態になる。
hello.phpを表示し、「phpinfo();」の行でF9をクリックして、ブレイクポイントを設定する。
ブレイクポイントを設定した行には赤丸が表示される。
再度F9をクリックするとブレイクポイントが解除される。
ブレイクポイントを設定して、WEBブラウザで「http://localhost/hello.php」を表示する。
ブレイクポイントの行がハイライトされ、処理が一時停止する。
これで、Visual Studio Codeを使ってphpをデバッグできるようになりました。