xampp と Visual Studio Code を使った PHP デバッグの方法を紹介します。これから PHP で開発環境を整備する方にお勧めの内容になっています。サンプルアプリケーションも公開しています。
目次
Visual Studio Code のインストール
下記 URL から、OS に対応する Visual Studio Code インストーラーをダウンロードし、インストールします。
Download Visual Studio Code - Mac, Linux, Windows
xampp のインストール
下記 URL から、OS に対応する xampp インストーラーをダウンロードし、インストールします。 ※ インストーラーのダウンロードに時間がかかるかもしれません。
XAMPP Installers and Downloads for Apache Friends
xampp コントロールパルの起動
xampp のコントロールパネルは、Windows であればデフォルトで下記のパスにインストールされています。
C:\xampp\xampp-control.exe
起動すると次の画面が表示されます。
Apache の起動
Apache コントロールパネル上の、Start ボタンをクリックして Apache を起動します。
Apache が起動すると、Apache が緑色でハイライトされます。
Apache が起動できない場合の対処方法
Apache が起動に失敗すると、Apache が赤色でハイライトされます。
また、ログに次のようなエラーメッセージが表示されます。
エラーメッセージ
[Apache] Port 80 in use by "Unable to open process" with PID 4! は、既に Port 80 番で他のプロセスが起動していることを示しています。多くの場合、World Wide Web 発行サービスを止めることで解消できます。
World Wide Web サービスの停止方法
キーボードショートカットの Windows + R を押下し、services.msc
を実行します。
サービス画面上で「World Wide Web 発行サービス」を停止します。
Apache の起動再試行
再度 xampp コントロールパネルで Apache を起動します。
Apache の停止
後ほど解説する、Xdebug の有効化を行うため、起動している Apache を停止しておきます。
Apache を停止します。
Apache がハイライトされておらず、停止したことが分かります。
Xdebug のダウンロード・配置
Xdebug は、PHP でのデバッグを行うためのモジュール(DLL)です。開発環境にインストールされている PHP に対応するバージョンの Xdebug をダウンロード・配置するには、次の手順を踏みます。
- PHP がインストールされているフォルダに移動する
- コマンドラインを起動する
- コマンドラインで php -i | clip を実行する
- 利用する Xdebug のバージョン特定・ダウンロード
- Xdebug の配置
PHP がインストールされているフォルダに移動する
xampp のデフォルト設定で PHP がインストールされているフォルダは、C:\xampp\php
になります。C:\xampp\php
をファイルエクスプローラーで開きます。アドレスバーに cmd
と入力し、Enter を押下します。
コマンドラインを起動する
C:\xampp\php
をコマンドラインで開けていることが分かります。
ターミナルで php -i | clip を実行する
ターミナルで php -i | clip
を実行します。実行結果はクリップボードに保存されます。ターミナルには何も表示されません。
利用する Xdebug のバージョン特定・ダウンロード
Xdebug Installation Wizard ページを開きます。
Xdebug: Support — Tailored Installation Instructions
クリップボードの内容をテキストエリアに張り付けて、「Analyse my phpinfo() output」ボタンをクリックします。
解析結果に遷移します。ページ下方に表示されているモジュール(DLL)のダウンロードリンクをクリックします。
Xdebug の配置
ダウンロードしたモジュールを C:\xampp\php
に配置します。
Xdebug の有効化
php.ini
に、次の記述を加え、Xdebug のデバッグ機能を有効化します。4 行目に、Xdebug モジュールへのファイルパスを記述しています。
[XDebug] xdebug.remote_enable = 1 xdebug.remote_autostart = 1 zend_extension = "C:\xampp\php\ext\php_xdebug-3.3.2-8.2-vs16-x86_64.dll" xdebug.mode=debug xdebug.start_with_request=yes xdebug.client_port=9003
Apache の起動
php.ini への編集が終わったため、再度 Apache を起動しておきます。
PHP Debug 拡張機能のインストール
PHP Debug をインストールします。PHP Xdebug は、Xdebug と Visual Studio Code を連携するための、Visual Studio Code の拡張機能です。
PHP Debug - Visual Studio Marketplace
デバッグ用 PHP アプリケーションの用意
xampp インストールフォルダ配下に、デバッグ用 PHP アプリケーションを用意します。
- アプリケーション用フォルダの作成
- index.php の作成
- launch.json の作成
アプリケーション用フォルダの作成
debug
という名前のフォルダを作成します。
debug
フォルダ上で右クリックし、その他のオプションを確認
をクリックします。
Code で開く
をクリックします。
Visual Studio Code で debug フォルダを開くことができました。
index.php の作成
index.php を作成します。
index.php に、次のデバッグ確認用コードを貼り付けます。
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>PHP デバッグテスト</title> </head> <body> <h2>ボタンをクリックします。</h2> <form method="POST" action=""> <input type="submit" value="クリック"> </form> <?php // フォームが送信された場合に処理を開始 if ($_SERVER['REQUEST_METHOD'] === 'POST') { // デバッグ用:h2 タグ出力処理でブレイクポイントを設定し、処理を止める echo "<h2 style='color:darkred'>ボタンがクリックされました!</h2>"; } ?> </body> </html>
また、index.php 21 行目の左側をクリックし、ブレイクポイントを設定します。ブレイクポイントが設定できれば赤丸が表示されます。アプリケーションのデバッグ実行時、このブレイクポイントで処理を中断することができます。
launch.json の作成
デバッグタブを選択し、create a launch.json file
をクリックします。
.vscode
フォルダと launch.json
が生成されていることが分かります。
ここまでで、デバッグ用 PHP アプリケーションの用意ができました。
index.php のデバッグ実行
デバッグタブで Listen for Xdebug
を選択し、実行ボタンをクリックします。
ブラウザで http://localhost/debug/index.php
を開きます。クリックボタンをクリックします。
Visual Studio Code の index.php 21 行目で処理が止まっていることが分かります。
F5 もしくは Continue
ボタンをクリックします。
実行結果の確認
index.php 21 行目の処理が行われ、h2 タグに文字列が表示されました。
サンプルアプリケーション
debug.zip を解凍し、xampp のインストールフォルダ(デフォルトでは C:\xampp\htdocs
)に配置してください。
まとめ
今回は、下記のように、環境設定やアプリケーションのデバッグ実行を行いました。手順は多いですが、一つ一つは簡単な設定となっています。環境構築の際には、本記事をご活用いただければと思います。
- Visual Studio Code のダウンロード・インストール
- xampp のダウンロード・インストール
- Apache の起動確認
- Xdebug のダウンロード・インストール・設定
- PHP Debug 拡張機能のインストール
- デバッグ用サンプルアプリケーションの実装
- アプリケーションのデバッグ実行