Windows11搭載の新しいPCを購入し、MySQL, Apache, PHPと順番にインストールしてきました。
これで最低限の環境が整った……かと言えば、まだ一つ足りていません。そう、Xdebugのインストールです。
Xdebugを入れなければPHPの開発体験はまったく駄目駄目になる、といっても過言ではないほど私にとっては重要だからです。

Laravelとかフレームワークしか使わないなら別ですが、素のPHPも良く使うからです。
ただ、Xdebugは過去にうまくインストールできず、あれこれと試行錯誤した経験もあります。
ちょっとおっくうに感じていましたが、避けて通れない……というわけで、本ページではXdebugをインストールしたいと思います。
今回の私の環境
今回は、以下の環境でXdebugをインストールします。
- OS: Windows11 64bit
- PHP: 8.2.11(インストール先→ C:\php82)
- Apache2.4.57
とは言えPHPやWindowsのバージョンに無関係でインストールする方法を選択します。
ですので現在PHPが動作していれば、このあたりは重要ではありません。
「ああ、ウィンドウズ環境にXdebug入れるんだなぁ」くらいに認識しておいていただければそれでOKです。
ダウンロード
まずはXdbugをダウンロードします。
ダウンロード
こちらにWindowsのダウンロードページがあります。
……が、ここで自分にあったXdebugを選べる人は、そもそも本ページを見る必要すら無いのではないでしょうか。
ちなみに、私はPHP8.2のThread Safe版を利用しています。なので執筆時の安定版であるXdebug 3.2.2の、PHP8.2 VS16 TS(64bit)を落とせばOKです。

……が、いろいろな環境の方がいると思いますし、選ぶのが難しいですよね。
異なる物を落としてもエラーになってしまいますし(←さんざん経験済み)。
ですのでここでは万人に優しい方法を用いてダウンロードします。
PHPにパスが通っている場合
PHPにパスが通っている場合は、PowerShellかコマンドプロンプトで以下のコマンドを打ちます。
php -iすると、以下の様にPHPの情報がずらっと出てきますので、一式を選択し、Ctrl+Cでコピーします。

PHPにパスが通っていない場合
もしもPHPにパスが通っていない場合は、異なる手段を採ります。
以下のファイルを用意し、http://localhost/などでアクセスできる場所にindex.php等として置いてください。
<?php
phpinfo();ブラウザからアクセスすると、phpinfo()によるPHPの情報が表示されます。
その画面でCtrl+Aで文字を全て選択し、Ctrl+Cでコピーしてください。

Xdebugのウィザードに貼り付け
コピーしたPHPの情報を、Xdebugのインストールウィザードページに貼り付け、Analyse my phpinfo() outputボタンを押します。

適したファイルのダウンロード
すると自分の環境を解析してくれ、相応しいXdebugを提示してくれます。すごい!

ここでは赤枠のphp_xdebug-3.2.2-8.2-vs16-x86_64.dllをクリックしてダウンロードします。

親切にインストール方法一式まで書いてくれていますね。
ちなみに、ブラウザがセキュリティの気を利かせてくれ、ダウンロードがうまくできないケースがあります。
ブラウザのダウンロード一覧画面(ChromeならCtrl+J)などから、保存を進めてください。

インストール
インストール、というよりはPHPから読み込みようなイメージです。
フォルダのリネーム
ダウンロードしたファイルの名称を、php_xdebug-3.2.2-8.2-vs16-x86_64.dllからphp_xdebug.dllに変更します。

拡張フォルダに移動
次に、php_xdebug.dllをPHPの拡張を配置するフォルダに移動します。
特に変更していない場合、PHPインストールフォルダのextとなります。
私の場合は、C:\php82\extの中に移動しました。余談ですが、他にもdllがたくさんあることが確認できます。

php.iniの編集
次に、php.iniを編集し、php_xdebug.dllをPHPから読み込むようにします。
php.iniをテキストエディタで開いた後、以下のようにextensionまたは;extensionが並んだ場所を探します。
検索機能を使うと良いでしょう。私は1000行目ちょいにありました。
;extension=soap
;extension=sockets
;extension=sodium
;extension=sqlite3
;extension=tidy
;extension=xsl
;extension=zip
;zend_extension=opcache※バージョンによっては多少違った記載になっているかもしれませんが、それでかまいません。
ここではzend_extension=xdebugという文字列を追加するのが目的です。
ちょうど;zend_extension=opcacheというのが類似設定にありましたので、その後に追記しました。
以下の様な感じです。
;extension=soap
;extension=sockets
;extension=sodium
;extension=sqlite3
;extension=tidy
;extension=xsl
;extension=zip
;zend_extension=opcache
zend_extension=xdebugこれでPHPを起動させた際に、php_xdebug.dllを読み込む準備が整いました。
動作確認
まだインストールに成功しているかは分からないので、Apacheで動作を確認します。
間違ったファイルを用意
検証用に、エラーを発生させるためのファイルを用意しましょう。
以下のコードを、http://localhost/などでアクセスできるように用意します。
<?php
function deepFunction1($value) {
// Xdebugの改良されたvar_dump()のデモ
var_dump($value);
return deepFunction2($value);
}
function deepFunction2($value) {
return deepFunction3($value);
}
function deepFunction3($value) {
return deepFunction4($value);
}
function deepFunction4($value) {
// ここで意図的に未定義の関数を呼び出しエラーを発生させます。
return undefinedFunction($value);
}
// エントリポイント
deepFunction1("Hello, Xdebug!");before
先ほどのファイルにブラウザからアクセスすると、以下のようなエラーになります。


これでPHPの開発するのはめっちゃ辛い……
再起動
after(Xdebugの反映)を見るため、php.iniの設定を再読込する必要があります。
そのためにはApacheを再起動します。

もちろん、まだ起動していなければスタートでOKです。
after
Xdebugの最低限のインストールが出来ていれば、エラーメッセージが変わります。
もう一度、先ほどのファイルにアクセスしてみます。

var_dump()が整えられて見やすくなったのと、プログラムの処理の流れが見やすくなりました。
これだけでもずいぶん開発体験が向上すると思います。
まとめ
以上、Xdebugの最低限のインストールを行いました。
Xdebugはこれだけではなく、オプションを工夫したり、VSCodeなどと連携してより便利に使うことも可能です。
インストールするだけでも充分なメリットと言えますが、必要に応じていろいろと使ってみると良いかもしれません。



コメント