「インストール - Xdebug」の版間の差分
60行目: | 60行目: | ||
== Xdebugの設定 == | == Xdebugの設定 == | ||
Xdebugの設定ファイルを作成または開いて、以下の内容を追記する。<br> | |||
<u>もし、OPCacheを使用する場合は、OPCacheの設定行の後にzend_extensionを入力すること。</u><br> | <u>もし、OPCacheを使用する場合は、OPCacheの設定行の後にzend_extensionを入力すること。</u><br> | ||
<br> | <br> |
2021年5月25日 (火) 15:44時点における版
概要
以下のコマンドを実行する。
# 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 sudo zypper install php7-xdebug
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/php7/extensionsディレクトリに配置される。
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.dump_undefined=1 xdebug.remote_log="/tmp/xdebug.log" xdebug.remote_host=localhost xdebug.remote_port=9000 xdebug.remote_handler=dbgp xdebug.remote_mode=req xdebug.client_port=9000 ;xdebug.client_host=127.0.0.1 xdebug.idekey=VSCODE
- Xdebug 2.xの設定
# 1行目を編集 zend_extension = <配置したxdebug.soファイルのフルパス> # ファイルの最後尾に以下の設定を記述 [xdebug] xdebug.dump_undefined=1 xdebug.remote_enable=1 xdebug.remote_autostart=1 xdebug.remote_log="/tmp/xdebug.log" xdebug.remote_host=localhost xdebug.remote_handler=dbgp xdebug.remote_mode=req xdebug.remote_port=9000 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
- スクリプトに渡す環境変数。
Codiumの設定
CodiumにPHP Debug extensionがインストールされていないことを確認する。
もし、PHP Debug extensionがインストールされている場合は、アンインストールする。
以下に示すURLにアクセスして、ページ右にある[Resources] - [Download Extension]を選択して、vsixファイルをダウンロードする。
https://marketplace.visualstudio.com/items?itemName=felixfbecker.php-debug
Codiumのメイン画面左にある[拡張機能]サイドバーから、[拡張機能]画面左上にある[...]ボタンを押下する。
[VSIXからのインストール...]を選択して、ダウンロードした拡張ファイルを選択する。
Xdebug 3.0以降を使用する場合は、php.iniファイルのxdebugセクションを、以下のように変更する必要がある。
ただし、CodiumのPHPプロジェクトにあるlaunch.jsonファイルにおいて、ポートを9003
に変更することにより、xdebug.client_port=9000
の設定は記述しなくともよい。
xdebug.mode=debug xdebug.client_host=127.0.0.1 xdebug.client_port=9000
確認方法
以下のコマンドを入力して、xdebugと表示されているならば成功である。
php -m | grep xdebug
Webブラウザと連携
PHPのデバッグにおいて、Webブラウザと連携すると開発効率が上がる。(例 : Get & Postのデバッグ等)
Webブラウザと連携する方法は、Webブラウザの拡張機能であるxDebug Helperをインストールする。
- FireFox
- Firefoxを起動して、[ツール]メニューバー - [アドオン]を選択する。
- 表示される画面上部にある[アドオンを探す]検索欄から、"Xdebug Helper"と入力する。
- Xdebug Helper for Firefoxをインストールする。
- ChromeおよびVivaldi
- https://chrome.google.com/webstore/category/extensions にアクセスする。
- 検索項目に"xDebug Helper"と入力して、xDebug Helperをインストールする。