開発環境構築

XDebugでPHPのソースコードをリモートデバッグする方法

hebishima.shogo

はい、hebiです。

XDebugを使用してサーバー上にあるソースコードをリモートデバッグする方法を記事にしたいと思います。

スポンサーリンク

環境

環境構築がまだの方は以下の記事からどうぞ!

あわせて読みたい
Amazon LinuxにPHPとApacheをインストールする方法
Amazon LinuxにPHPとApacheをインストールする方法
あわせて読みたい
【PHP】CodeIgniter4のインストール方法
【PHP】CodeIgniter4のインストール方法

XDebugとは

XDebugは、PHP プログラミング言語用のデバッグ拡張モジュールです。PHP スクリプトのデバッグを支援し、開発者が効率的にバグを見つけて修正できるようにします。XDebugを使用すると、以下のような機能が利用できます。

  1. スタックトレースの表示: エラーが発生した場合や、特定の箇所でスクリプトの実行が停止した場合に、スクリプトのスタックトレースを表示して、どの関数やメソッドが呼び出されているかを把握できます。
  2. 変数の監視: スクリプトの実行中に変数の値を監視し、変数の値がどのように変化するかを確認できます。
  3. 条件付きブレークポイント: 特定の条件が満たされたときにのみブレークポイントが発生するように設定できます。これにより、特定の状況下でのみコードの実行を一時停止して調査できます。
  4. リモートデバッグ: XDebugは、リモートマシン上の PHP スクリプトをローカルマシンからデバッグする機能も提供します。これにより、リモートサーバー上で発生する問題を効率的にデバッグできます。

今回は「4.リモートデバッグ」の方法について記事にします!

XDebugのインストール

XDebugの機能を利用できるようにサーバーにライブラリをインストールします。

php-develインストール

Amazon Linux 2023にXDebugをインストールするためには、PECL(PHP Extension Community Library)を使用する必要がありますが、PECLを使用するためにはphp-develをインストールします。

sudo yum install php-devel

PECLインストール

続いてPECLをインストールします。

sudo yum install php-pear

XDebuglインストール

XDebugをインストールします。

sudo pecl install xdebug

以下のようなメッセージが表示されると成功です。以降のXdebug設定でxdebug.soのパスが必要になるので控えておきましょう。

Build process completed successfully
Installing ‘/usr/lib64/php8.2/modules/xdebug.so
install ok: channel://pecl.php.net/xdebug-3.3.1


XDebug設定

以下のコマンドを実行し、XDebugの設定ファイルを作成します。

sudo nano /etc/php.d/xdebug.ini

以下の内容を入力してください。
zend_extensionにはインストール時に控えたxdebug.soのパスを入力します。
xdebug.client_portに指定したポートはデバッグの設定値やポートフォワーディングする際に必要になるので控えてください。

zend_extension=/usr/lib64/php8.2/modules/xdebug.so
xdebug.mode=debug
xdebug.client_host=127.0.0.1
xdebug.log = "/var/log/xdebug.log"
xdebug.log_level=7
xdebug.discover_client_host=true
xdebug.client_port=9093

ApacheとPHP-FPMの再起動

上記の設定を適用するためにApacheとPHP-FPMを再起動します。

sudo systemctl restart httpd
sudo systemctl restart php-fpm

php-fpmの再起動を怠っており上手くリモートデバッグができませんでした。

この再起動は必要なので忘れずに実行してください。

以上でサーバー側のインストールおよび設定が完了です。

Visual Studio Codeの設定

Visual Studio Codeでデバッグを行います。そのための設定を行っていきましょう。

PHP Debugのインストール

Visual Studio CodeのPHP Debugをインストールします。

ポイント

なぜかPHP Debugが複数あります。インストールされている件数が多いPHP Debugをインストールしましょう。

launch.jsonの作成

デバッグするためにlaunch.jsonを作成します。
左にあるデバッグアイコンからlaunch.jsonを作成できます。

nameがListen for Xdebugになっている箇所を以下のように修正してください。

            "name": "Listen for Xdebug",
            "type": "php",
            "request": "launch",
            "port": 9093,
            "pathMappings":{
                "/var/www/html/xxxx": "${workspaceFolder}"
            }

portにはxdebug.iniに指定したポートを指定します。
pathMappingsにはローカルのファイルパスとリモートサーバーのファイルパスの間の対応関係を定義します。
以下の記事で作成したWebサービスを参考にした場合、xxxxの部分は「my_codeigniter_project」になります。

あわせて読みたい
【PHP】CodeIgniter4のインストール方法
【PHP】CodeIgniter4のインストール方法

以上でVisual Studio Codeの設定完了です。

xdebug helperのインストール

google choromeの拡張機能Xdebug helperをインストールしてください。

あわせて読みたい
xdebug helper
xdebug helper

インストールするとデバッグのアイコンが表示され、Debugにすると緑色アイコンになります。

ポートフォワードの設定

ポートフォワードを設定し、PHPのサーバへ接続を転送するようにします。

Rloginをダウンロード

Rloginをダウンロードします。

あわせて読みたい
Rloginダウンロード
Rloginダウンロード

サーバー設定

ダウンロードしたRLogin.exeを実行し、以下の設定を行います。

ホスト名、TCPポート、ログインユーザー名を入力します。

「SS認証鍵」ボタンを押下し、pemファイルを指定してください。

プロトコル – ポートフォワード設定

以下のように設定してください。

protにはxdebug.iniに設定したポートを指定します。

以上でRLogin.exeの設定完了です。
RLogin.exeを実行し、Amazon Linux 2023にログインした状態にしましょう。

デバッグ準備

以下の状態にすることでデバッグができます!
RLogin.exeでAmazon Linux 2023にログインした状態

ChromeにてXdebug helperがDebug状態

Visual Studio CodeでF5でデバッグ実行した状態
ここではControllerのindexにブレイクポイントをはってます。

以上で準備が整いました!

デバッグ確認

ブラウザでCodeIgniterのホーム画面をアクセスしてみましょう!
以下のようにブレイクポイントで止めることができました!

最後に

XDebugでリモートデバッグできましたでしょうか?
障害調査でかなり効率が上がると思いますので是非利用してみてください!

次は、SFTPを設定し、ソースコードをサーバ上にパッと適用できる環境を作成しましょう!

あわせて読みたい
SFTPを使用してローカルで保存したソースコードをリモートサーバへ反映させる方法
SFTPを使用してローカルで保存したソースコードをリモートサーバへ反映させる方法

最後までお読みいただきありがとうございました(^^)/

スポンサーリンク
ABOUT ME
hebi
hebi
エンジニア
フルスタックエンジニアとして活躍中。
HTML5プロフェッショナル認定Level1、Level2所持者です。

未経験の方でも簡単にプログラミングを学べるようにと情報を発信しております。
記事URLをコピーしました