「インストール - Xdebug」の版間の差分

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動
122行目: 122行目:
PHPプロジェクトのワークスペースにlaunch.jsonを追加して、以下のように設定を記述する。<br>
PHPプロジェクトのワークスペースにlaunch.jsonを追加して、以下のように設定を記述する。<br>
VSCodeのメイン画面左にある[デバッガ]アイコンから歯車アイコンを押下してPHPを選択すると、launch.jsonファイルが自動作成される。<br>
VSCodeのメイン画面左にある[デバッガ]アイコンから歯車アイコンを押下してPHPを選択すると、launch.jsonファイルが自動作成される。<br>
<u>"Launch currently open script"では、Webブラウザと連携したデバッグができないため、注意すること。</u><br>
* Listen for XDebug
* Listen for XDebug
*: この設定は、XDebugの指定されたポート(初期は9000番)でリッスンを開始する。
*: この設定は、XDebugの指定されたポート(初期は9000番)でリッスンを開始する。

2020年12月29日 (火) 05:21時点における版

概要

以下のコマンドを実行する。

# CentOS PHP 7.3
sudo yum install php73-pecl-xdebug.x86_64

# CentOS PHP 7.4
sudo yum install php74-pecl-xdebug.x86_64

# SUSE(不要)



Xdebugのダウンロード

まず、ApacheまたはNgineXを起動する。
ApacheまたはNgineXのルートディレクトリに、以下の内容のindex.phpファイルを作成する。

sudo vi /var/www/html/index.php
または
sudo vi /srv/www/htdoc/index.php


 <?php
    phpinfo();
 ?>


Webブラウザを起動して、http://localhost/ にアクセスする。
その時、インストール済みのPHPの環境が表示されるので、[Ctrl] + [A]キーを同時押下して、全てコピーする。

次に、必要なXdebugのバージョンを調べるため、以下のWebサイトにアクセスする。

https://xdebug.org/wizard.php


Webサイトのテキストボックスに、上記でコピーした情報を貼り付けて、[Analyse my phpinfo() output]ボタンを押下する。
Xdebugのダウンロードページが表示されるので、[Instruction]項目からXdebugをダウンロードする。


Xdebugのインストール

まず、Xdebugの公式Webサイトに行き、Xdebugのソースコードをダウンロードする。
以下のコマンドを入力して解凍する。

tar zxvf xdebug-<バージョン名>.tgz


解凍したXdebugのディレクトリに移動し、phpizeコマンドを実行する。

cd xdebug-<バージョン名>
phpize


次に、configureスクリプトを実行する。
インストール対象となるシステム特有の機能や情報を記述したMakefileを作成する。
もし、configureに失敗する場合、コンパイルに必要なライブラリやヘッダファイル等が不足していると考えられる。
--prefixオプションは使用できないので注意すること。

./configure --enable-xdebug


Xdebugのソースコードをコンパイルする。

make -j 8


Xdebugをインストールする。
必ず、スーパーユーザ権限で実行すること。

sudo make install


インストールしたxdebug.soファイルを、任意のディレクトリに配置する。
以下の例では、/usr/lib64/php/modulesディレクトリに配置している。

sudo cp -a modules/xdebug.so /usr/lib64/php/modules



Xdebugの設定

Xdebugの設定ファイルを開いて、以下に示すように編集する。
もし、OPCacheを使用する場合は、OPCacheの設定行の後にzend_extensionを入力すること。

Xdebugのバージョンにより、[xdebug]セクションの設定が異なることに注意すること。

# CentOS
sudo vi /etc/php.d/15-xdebug.ini

# SUSE
sudo vi /etc/php7/conf.d/xdebug.ini


  • Xdebug 3.xの設定
# 1行目を編集
zend_extension = <配置したxdebug.soファイルのフルパス>

# ファイルの最後尾に以下の設定を記述
[xdebug]
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.remote_log="/tmp/xdebug.log"
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
;xdebug.client_host=127.0.0.1
xdebug.client_port=9000
xdebug.dump_undefined=1
xdebug.idekey=VSCODE


  • Xdebug 2.xの設定
# 1行目を編集
zend_extension = <配置したxdebug.soファイルのフルパス>

# ファイルの最後尾に以下の設定を記述
[xdebug]
xdebug.dump_undefined=1
xdebug.remote_log="/tmp/xdebug.log"
xdebug.remote_enable=1
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_autostart=1
xdebug.idekey=VSCODE


xdebug.iniファイルの設定を反映させるため、Apache2またはNgineXを再起動する。

sudo systemctl restart apache2
または
sudo systemctl restart nginex



VSCodeの設定

VSCodeにてXdebugを使用する場合において、VSCodeの設定を記載する。
なお、VSCodiumにはバグが存在するため、Xdebugが使用できないので注意すること。

まず、以下に示すVSCodeの拡張をインストールする。

  • PHP Extension Pack
    PHP IntelliSense
    PHP Debug


PHPプロジェクトのワークスペースにlaunch.jsonを追加して、以下のように設定を記述する。
VSCodeのメイン画面左にある[デバッガ]アイコンから歯車アイコンを押下してPHPを選択すると、launch.jsonファイルが自動作成される。
"Launch currently open script"では、Webブラウザと連携したデバッグができないため、注意すること。

  • Listen for XDebug
    この設定は、XDebugの指定されたポート(初期は9000番)でリッスンを開始する。
    XDebugを構成する場合、Webブラウザを使用してWebサーバに要求を行う、または、CLIスクリプトを起動するたびにXDebugが接続して、
    ブレークポイントや例外等で停止することができる。
  • Launch currently open script
    この設定は、CLIデバッグの例である。
    現在開いているスクリプトをCLIとして起動した後、デバッグコンソールに全てのstdout / stderr出力を表示して、
    スクリプトが終了するとデバッグセッションを終了する。
"version": "0.2.0",
"configurations": [
   {
      "name": "Listen for XDebug",
      "type": "php",
      "request": "launch",
      "port": 9000,
      //"pathMappings": {"": "${workspaceRoot}" }
   },
   {
      "name": "Launch currently open script",
      "type": "php",
      "request": "launch",
      "program": "${file}",
      "cwd": "${fileDirname}",
      "port": 9000,
      //"pathMappings": {"": "${workspaceRoot}"},
      "runtimeExecutable": "/usr/bin/php"
   }
]


以下に、プロジェクト構成ファイルであるlaunch.jsonファイルの設定項目の意味を示す。

  • request
    launchに設定する。
  • hostname
    XDebugをリッスンする時にバインドするアドレス(標準 : 使用可能な場合は全てのIPv6接続、それ以外は全てのIPv4接続)
  • port
    XDebugをリッスンするポート(標準 : 9000番)
  • stopOnEntry
    スクリプトの開始時に中断するかどうか(標準 : false)
  • pathMappings
    PCのローカルソースパスにマッピングされているサーバパスのリスト
    詳細は、リモートホストのデバッグを参照すること。
  • log
    VSCodeとアダプタ間の全ての通信をデバッグコンソールに記録するかどうか。
    さらに下のトラブルシューティングを参照してください。
  • ignore
    エラーを無視する必要があるglobパターンのオプションの配列
    例 : **/vendor/**/*.php
  • xdebugSettings
    XDebugのリモートデバッグの設定をオーバーライドして、XDebugをニーズに合わせて微調整できる。
    例えば、max_childrenとmax_depthを操作して、取得する配列、オブジェクトの子の最大数、配列やオブジェクト等の構造体の最大深度を変更できる。
    これにより、デバッガを高速化できる。
    設定できる機能名の完全なリストについては、XDebugのドキュメントを参照すること。
  • max_children
    最初に取得する配列またはオブジェクトの子の最大数。
  • max_data
    最初に取得する変数データの最大量。
  • max_depth
    配列、ハッシュ、オブジェクト構造をIDEに送信する時、デバッガエンジンが返す可能性のある最大の深さ。
  • show_hidden
    この機能は、プロパティ(クラスのプライベートメンバ等)に関する詳細な内部情報が必要な場合に、IDEによって設定できる。
    例えば、この値を0にすると、非表示のメンバがIDEに表示されないことを意味する。


CLIデバッグの固有のオプション

  • prgram
    起動する必要のあるスクリプトへのパス。
  • args
    スクリプトに渡される引数。
  • cwd
    スクリプトの起動時に使用する現在の作業ディレクトリ。
  • runtimeExecutable
    スクリプトの起動に使用されるPHPバイナリ(Windowsの場合、php.exe)へのパス。
  • runtimeArgs
    PHPバイナリ(Windowsの場合、php.exe)に渡す追加の引数。
  • externalConsole
    デバッグコンソールではなく、外部コンソールウィンドウでスクリプトを起動する。(標準 : false)
  • env
    スクリプトに渡す環境変数。



確認方法

以下のコマンドを入力して、xdebugと表示されているならば成功である。

php -m | grep xdebug



Webブラウザと連携

PHPのデバッグにおいて、Webブラウザと連携すると開発効率が上がる。(例 : Get & Postのデバッグ等)

Webブラウザと連携する方法は、Webブラウザの拡張機能であるxDebug Helperをインストールする。

  • FireFox
    1. Firefoxを起動して、[ツール]メニューバー - [アドオン]を選択する。
    2. 表示される画面上部にある[アドオンを探す]検索欄から、"Xdebug Helper"と入力する。
    3. Xdebug Helper for Firefoxをインストールする。
  • ChromeおよびVivaldi
    1. https://chrome.google.com/webstore/category/extensions にアクセスする。
    2. 検索項目に"xDebug Helper"と入力して、xDebug Helperをインストールする。