メモ

ACTABAのホームページ

TOP > Visual Studio Codeをphpエディタとして使用してみた

見出し

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
    保存やタイプのタイミングで構文チェックを行うかの設定。デフォルトでは保存時に実施。
設定を変更するには、[ctrl]+[,](「ctrl」を押しながら「,」)を押し、フィルタ欄に「php」を入力する。
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)からダウンロードするのが良いらしい。

screenshot

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の最終行に下記を追加。

zend_extension = C:\php\ext\php_xdebug-2.9.5-7.2-vc15-x86_64.dll
また、リモートでバッグを有効にするにはphp.iniに下記を追加する。
[XDebug]
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
これで、Xdebugのインストールは終了。

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」内の

Define SRVROOT "c:/Apache24"
の箇所を配置するフォルダに変更すればよい。
パスの区切り文字はバックスラッシュ[\]ではなく、スラッシュ[/]。

サーバのポート番号は80番になっているので、変更するときはhttpd.confファイルの、

Listen 80
の80を使用したいポート番号に変更する。
VirtualHostを使用する設定もあるが今は使わない。
複数ポートをListenしている場合やホスト名でDocumentRootを分けたい場合はVirtualHostを使用する。 詳しくは、Apache HTTP serverのドキュメントを参照。

次にApacheでPHPを処理できるように設定する。
phpのモジュールを有効にするので、httpd.confに下記を追加する。

LoadModule php7_module C:/php/php7apache2_4.dll
httpd.confに、LoadModuleを記載している箇所があるので、その付近に追加しておく。
「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の情報が表示されれば設定は成功。
screenshot

ApacheでPHPのデバッグをする

hello.phpにブレイクポイントを設定してみよう。
WEBブラウザでhello.phpを表示したときにブレイクしてみる。

VS Codeでデバッグするファイルを含むドキュメントルートを表示する。
hello.phpのあるドキュメントルートは「C:\apache24\htdocs」なので、VS Codeで表示する。
左のデバッグアイコンをクリックする。
screenshot

XDebugを起動したいので新しい設定を作成する。
「create a launch.json file」をクリック。
「create a launch.json file」が表示されないときは、jsonファイルに直接下記を追加してもOK。

{
    "type": "php",
    "request": "launch",
    "name": "Listen for XDebug",
    "port": 9000
}

screenshot

一覧で「PHP」をクリックする。
screenshot

XDebugのポートを変更する場合は、jsonファイルを変更するが、今回はデフォルトの9000番のため変更しなくても大丈夫なので、そのままにする。
左上のリストボックスで「Listen for XDebug」を選択して、リストボックスの左の実行アイコンをクリックする。
screenshot

これで、apacheからの通知を待っている状態になる。

hello.phpを表示し、「phpinfo();」の行でF9をクリックして、ブレイクポイントを設定する。
ブレイクポイントを設定した行には赤丸が表示される。
再度F9をクリックするとブレイクポイントが解除される。

ブレイクポイントを設定して、WEBブラウザで「http://localhost/hello.php」を表示する。
ブレイクポイントの行がハイライトされ、処理が一時停止する。
screenshot

これで、Visual Studio Codeを使ってphpをデバッグできるようになりました。

ページのトップへ戻る