📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
| (同じ利用者による、間の15版が非表示) | |||
| 1行目: | 1行目: | ||
== 概要 == | == 概要 == | ||
Xdebugは、PHPの拡張機能の1つであり、PHPの開発環境を向上させる様々な機能を提供する。<br> | |||
<br> | |||
* ステップデバッグ | |||
*: スクリプトの実行中に、IDEやエディタでコードをステップ実行する方法である。 | |||
*: <br> | |||
* PHPのエラー報告の改善 | |||
*: 改良された<code>var_dump</code>関数、Notice、Warnings、Errors、Exceptionのスタックトレースにより、エラーが発生するまでのコードパスを強調して表示する。 | |||
*: <br> | |||
* トレース | |||
*: 全ての関数の呼び出しを、引数や呼び出し位置とともにディスクに書き込む。 | |||
*: オプションで、各関数のすべての変数割り当てと戻り値も含まれる。 | |||
*: <br> | |||
* プロファイリング | |||
*: 視覚化ツールを使用して、PHPソフトウェアのパフォーマンスを分析して、ボトルネックを見つけることができる。 | |||
*: <br> | |||
* コードカバレッジ分析 | |||
*: PHP Unitでユニットテストを実行した際に、コードベースのどの部分が実行されたかを示す。 | |||
<br><br> | |||
== Xdebugのインストール == | |||
==== パッケージ管理システムからインストール ==== | |||
以下のコマンドを実行する。<br> | 以下のコマンドを実行する。<br> | ||
# | # RHEL | ||
sudo | sudo dnf install php84-php-pecl-xdebug3.x86_64 # PHP 8.4の場合 | ||
php83-php-pecl-xdebug3.x86_64 # PHP 8.3の場合 | |||
# | php82-php-pecl-xdebug3.x86_64 # PHP 8.2の場合 | ||
php81-php-pecl-xdebug3.x86_64 # PHP 8.1の場合 | |||
php81-php-pecl-xdebug3.x86_64 # PHP 8.0の場合 | |||
php74-pecl-xdebug3.x86_64 # PHP 7.4の場合 | |||
# SUSE | # SUSE | ||
sudo zypper install php7-xdebug | sudo zypper install php8-xdebug # PHP 8の場合 | ||
php7-xdebug # PHP 7の場合 | |||
<br> | |||
== Xdebugのダウンロード == | ==== ソースコードからインストール ==== | ||
===== Xdebugのダウンロード ===== | |||
まず、ApacheまたはNgineXを起動する。<br> | まず、ApacheまたはNgineXを起動する。<br> | ||
ApacheまたはNgineXのルートディレクトリに、以下の内容のindex.phpファイルを作成する。<br> | ApacheまたはNgineXのルートディレクトリに、以下の内容のindex.phpファイルを作成する。<br> | ||
| 32行目: | 56行目: | ||
Webサイトのテキストボックスに、上記でコピーした情報を貼り付けて、[Analyse my phpinfo() output]ボタンを押下する。<br> | Webサイトのテキストボックスに、上記でコピーした情報を貼り付けて、[Analyse my phpinfo() output]ボタンを押下する。<br> | ||
Xdebugのダウンロードページが表示されるので、[Instruction]項目からXdebugをダウンロードする。<br> | Xdebugのダウンロードページが表示されるので、[Instruction]項目からXdebugをダウンロードする。<br> | ||
<br> | <br> | ||
===== Xdebugのインストール ===== | |||
まず、[https://xdebug.org/download Xdebugの公式Webサイト]にアクセスして、Xdebugのソースコードをダウンロードする。<br> | |||
ダウンロードしたファイルを解凍する。<br> | |||
tar xf xdebug-<バージョン名>.tgz | |||
cd xdebug-<バージョン名> | cd xdebug-<バージョン名> | ||
<br> | |||
<code>phpize</code>コマンドを実行する。<br> | |||
phpize | phpize | ||
<br> | <br> | ||
Xdebugをビルドおよびインストールする。<br> | |||
もし、<code>configure</code>スクリプトの実行に失敗する場合、Xdebugのビルドに必要なライブラリ等が不足している。<br> | |||
mkdir xdebug-build && cd xdebug-build | |||
./configure --enable-xdebug | ../configure \ | ||
< | --enable-xdebug \ | ||
--enable-xdebug-dev \ # 任意 | |||
make -j | --prefix=<PHPのインストールディレクトリ> # PHPを任意のディレクトリにインストールしている場合等に指定する | ||
make -j $(nproc) | |||
make install | |||
または | |||
sudo make install | |||
<br> | <br> | ||
インストールしたxdebug.soファイルの場所は、各LinuxディストリビューションやPHPの環境により異なる。<br> | |||
<br> | <br> | ||
RHELおよびSUSEにおいて、パッケージ管理システムからPHPをインストールした場合は、/usr/lib64/php<PHPのバージョン>/extensionsディレクトリに配置される。<br> | |||
ソースコードからPHPをインストールした場合は、/<PHPのインストールディレクトリ>/lib64/extensions/xxxディレクトリ等に配置される。<br> | |||
<br><br> | <br><br> | ||
| 64行目: | 92行目: | ||
<br> | <br> | ||
<u>Xdebugのバージョンにより、[xdebug]セクションの設定が異なることに注意すること。</u><br> | <u>Xdebugのバージョンにより、[xdebug]セクションの設定が異なることに注意すること。</u><br> | ||
# | # RHEL | ||
sudo vi /etc/php.d/15-xdebug.ini | sudo vi /etc/php.d/15-xdebug.ini # PHPをパッケージ管理システムからインストールしている場合 | ||
sudo vi /<PHPのインストールディレクトリ>/etc/conf.d/xdebug.ini # PHPをソースコードからインストールしている場合 | |||
# SUSE | # SUSE | ||
sudo vi /etc/ | sudo vi /etc/php<span style="color: #C00000">X</span>/conf.d/xdebug.ini # PHPをパッケージ管理システムからインストールしている場合 <span style="color: #C00000">X</span>はPHPのバージョン | ||
sudo vi /<PHPのインストールディレクトリ>/etc/conf.d/xdebug.ini # PHPをソースコードからインストールしている場合 | |||
<br> | <br> | ||
* Xdebug 3.xの設定 | * Xdebug 3.xの設定 | ||
*: Xdebug 3.xの標準ポート番号は、9003番に変更されたことに注意すること。 | |||
*: <code>xdebug.remote_host</code>は、<code>xdebug.client_host</code>に置き換えられた。 | |||
*: <code>xdebug.remote_port</code>は、<code>xdebug.client_port</code>に置き換えられた。 | |||
*: <code>xdebug.remote_log</code>は、<code>xdebug.log</code>に置き換えられた。 | |||
*: これは Step Debugging以外のログメッセージも含まれる。 | |||
*: <br> | |||
*: <code>xdebug.remote_mode</code>は、以下に示す設定に置き換えられた。 | |||
*:: <code>xdebug.remote_mode=req</code>(デフォルト値)の場合は、<code>xdebug.mode=debug</code>と<code>xdebug.start_with_request=trigger</code>を使用する。 | |||
*:: <code>xdebug.remote_autostart</code>の動作が必要な場合は、<code>xdebug.start_with_request=trigger</code>の代わりに<code>xdebug.start_with_request=yes</code>を使用する。 | |||
*:: <code>xdebug.start_with_request=jit</code>の場合は、<code>xdebug.mode=debug</code>および<code>xdebug.start_upon_error=yes</code>を使用する。 | |||
# 1行目を編集 | # 1行目を編集 | ||
zend_extension = <配置したxdebug.soファイルのフルパス> | zend_extension = <配置したxdebug.soファイルのフルパス> | ||
| 79行目: | 120行目: | ||
xdebug.start_with_request=yes | xdebug.start_with_request=yes | ||
xdebug.dump_undefined=1 | xdebug.dump_undefined=1 | ||
xdebug. | xdebug.log="<出力したいログファイルのフルパス 例. /home/user/xdebug.log>" | ||
xdebug.remote_handler=dbgp | xdebug.remote_handler=dbgp | ||
xdebug. | xdebug.client_port=9003 ; 標準は9003番ポート | ||
xdebug.client_host=127.0.0.1 | |||
xdebug.idekey=VSCODE | xdebug.idekey=VSCODE | ||
<br> | <br> | ||
* Xdebug 2.xの設定 | * Xdebug 2.xの設定 | ||
: Xdebug 2.xの標準ポート番号は、9000番であることに注意すること。 | |||
# 1行目を編集 | # 1行目を編集 | ||
zend_extension = <配置したxdebug.soファイルのフルパス> | zend_extension = <配置したxdebug.soファイルのフルパス> | ||
| 104行目: | 143行目: | ||
xdebug.idekey=VSCODE | xdebug.idekey=VSCODE | ||
<br> | <br> | ||
xdebug. | xdebug.iniファイルの設定を反映させるため、Apache2またはNginXを再起動する。<br> | ||
sudo systemctl restart apache2 | sudo systemctl restart apache2 | ||
または | または | ||
sudo systemctl restart | sudo systemctl restart nginx | ||
<br><br> | <br><br> | ||
| 235行目: | 274行目: | ||
*# 検索項目に"xDebug Helper"と入力して、xDebug Helperをインストールする。 | *# 検索項目に"xDebug Helper"と入力して、xDebug Helperをインストールする。 | ||
<br><br> | <br><br> | ||
== リモートデバッグ == | |||
==== リモートサーバ側の設定 ==== | |||
Xdebugの設定ファイルに、以下の設定を追記する。<br> | |||
sudo vi /etc/php7/conf.d/xdebug.ini | |||
<br> | |||
# /etc/php7/conf.d/xdebug.iniファイル | |||
[xdebug] | |||
xdebug.mode=debug | |||
xdebug.start_with_request=yes | |||
xdebug.dump_undefined=1 | |||
xdebug.remote_enable=1 | |||
xdebug.remote_autostart=1 | |||
xdebug.remote_log=<デバッグ用ログファイルのフルパス> ; 例 : /tmp/xdebug.log | |||
xdebug.remote_host=<開発PCのIPアドレス> ; 例 : 192.168.1.0/24 | |||
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 | |||
<br> | |||
次に、SSHの設定ファイルに、以下の設定を追記する。<br> | |||
SSHが未インストールまたは未設定の場合、[[設定 - SSH]]のページを参照すること。<br> | |||
sudo vi /etc/ssh/sshd_config | |||
<br> | |||
# /etc/ssh/sshd_configファイル | |||
GatewayPorts yes | |||
<br> | |||
設定後、SSHサービスを再起動する。<br> | |||
sudo systemctl restart sshd | |||
<br> | |||
==== 開発用PCの設定 ==== | |||
まず、リモートサーバにあるPHPプロジェクト(ドキュメントルートにあるファイル)を開発用PCにコピーする。<br> | |||
rsync -avz --rsync-path="sudo rsync" --delete --rsh="ssh" <リモートサーバのユーザ名>@<リモートサーバのIPアドレス>:<ドキュメントルートのフルパス> <開発用PCのPHPプロジェクトのフルパス> | |||
<br> | |||
次に、リモートサーバと開発環境の間にSSHトンネルを作成する。<br> | |||
ターミナルよりもVSCode等のIDE付属ターミナルで実行する方が便利である。<br> | |||
ssh -R <VSCode等のIDEで設定する任意のポート番号>:<開発用PCのIPアドレス>:<xdebug.remote_portで設定したポート番号> <リモートサーバのユーザ名>@<リモートサーバのIPアドレス> | |||
# 例 | |||
ssh -R 9000:192.168.1.10:9000 hoge@192.168.1.20 | |||
<br> | |||
VSCodeで開発を行う場合、VSCodeからPHP Debug拡張機能をインストールする。<br> | |||
launch.jsonファイルに、以下の設定を追記する。<br> | |||
<syntaxhighlight lang="json"> | |||
// ...略 | |||
{ | |||
"name": "Listen for XDebug", | |||
"type": "php", | |||
"request": "launch", | |||
"port": <上記のsshコマンドで設定した任意のポート番号>, | |||
"log": true, | |||
"pathMappings": { | |||
"<Webサーバのドキュメントルートのフルパス>": "${workspaceFolder}" | |||
} | |||
} | |||
// ...略 | |||
</syntaxhighlight> | |||
<br> | |||
最後に、PHPプロジェクトがデバッグできるかどうか確認する。<br> | |||
<br><br> | |||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ: | [[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Web]] | ||