VSCodeと Xdebug を使用した PHP デバッグのステップバイステップガイド

PHPデバッグの方法として代表的なものはvar_dumpがありますが、XdebugとVScodeを使用したデバッグ方法も存在します。

今回はPHP開発を効率的に行うために活用する事ができるXdebugの設定方法を紹介していきます。

紹介する前提条件としては

  • VSCode の Remote SSH を使用して開発している
  • 開発サーバーはレンタルサーバー(エックスサーバー)
  • rootが取得できないのでXdebugはソースインストール
  • Laravelプロジェクトを例に紹介

となっております。

以下の流れが出来るようになります。

Xdebugを設定することでブラウザで表示されているPHPアプリケーションの変数の結果や流れを確認することが出来るようになります。

Xdebugの利点

Xdebugを使用することでPHPアプリケーションの開発を効率化できるようになります。

ですが、Xdebugで実現できるデバッガ機能は主にコンパイルが必要な言語で重要なデバッグ方法なのですが、PHPアプリケーションはコンパイルを必要としないため、私個人としては必ずしもXdebugが重要にはならないとは考えています。

var_dumpを使用して問題となっている箇所を出力する事で確認すれば済んでしまう事が多々あります。

しかし複雑なアプリケーションの修正で処理の流れがわからない場合や、 var_dump の出力結果が他のHTML要素に隠れてしまう時に Xdebug に活躍します。

var_dump では探しづらいPHPコードのデバッグや、var_dumpを使用した細かいトライアンドエラーにもどかしさを感じるのであれば Xdebug は心強い味方になります。

Xdebugのインストール

一般的には peclなどのパッケージ管理ツールでインストールする事ができますが、今回紹介する方法としてはレンタルサーバーで設定するためソースインストールします。

$ mkdir php_source
$ cd php_source/
$ wget https://xdebug.org/files/xdebug-3.2.2.tgz
$ tar -xzf xdebug-3.2.2.tgz
$ cd xdebug-3.2.2
$ /opt/php-8.1.12/bin/phpize
$ ./configure --enable-xdebug --with-php-config=/opt/php-8.1.12/bin/php-config
$ make
$ ls -1 modules/xdebug.so
modules/xdebug.so
$

これで Xdebug を準備できたので、読み込みさせます。

通常はphp.iniを使用してXdebugを読み込みさせるのですが、開発しているプロジェクトではレンタルサーバーのサブドメインでPHPバージョンを切り替えて表示していたため、php.iniでは設定できない方法でした。

以下の記事で設定したPHPを使用して開発しています。

Xdebugの読み込みをさせたいだけなので、実行しているPHP指定のオプションに追加すればOKです。

#!/usr/bin/sh
exec /usr/bin/php-fcgi8.1 \
-d zend_extension=/path/to/home/php_source/xdebug-3.2.2/modules/xdebug.so \
-d xdebug.mode=debug \
-d xdebug.start_with_request=yes \
-d xdebug.client_port=9003

これで念の為にphpinfoを実行してXdebugが設定されていれば完了です。

phpinfo();

VSCodeで実行とデバッグの設定

拡張機能のPHP Debugをインストールします。

左側のサイドバーで「デバッグ」アイコンを選択し、歯車アイコン(設定)をクリックし、「launch.json」ファイルを選択し、設定を編集します。

以下は実際に使っている設定値です。

{
    // IntelliSense を使用して利用可能な属性を学べます。
    // 既存の属性の説明をホバーして表示します。
    // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for Xdebug",
            "type": "php",
            "request": "launch",
            "port": 9003,
            "pathMappings": {
                "/path/to/php/project": "${workspaceFolder}"
            }
        }
    ]
}

デフォルトの設定に pathMappings の値を追加しただけです。

ブレークポイントを置いてデバッグ実行

あとは処理を停止したい箇所にブレークポイントを置いてデバッグ実行(F5)をした状態でブラウザを読み込めばブレークポイントを置いた箇所で停止します。

設定が問題なければ前述の実行方法でデバッガを試す事が可能になります。

停止した状態で変数の確認やステップ実行が行えるのでPHPのデバック作業に活用してください。

終わりに

以上、PHPでXdebugとVSCodeを使用したデバッグ方法を紹介しました。

通常、レンタルサーバーではXdebugはインストールされていないので、今回紹介した方法でXdebugを使用したデバッグを行う事が可能になります。

Laravelプロジェクトを例に紹介しましたが、ウェブブラウザで表示されるPHPプロジェクトであれば同様の方法で設定する事ができます。

紹介した方法でPHPの効率がいいデバッグ方法を試してみてください。

お疲れ様でした。

投稿者


Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA