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などと連携してより便利に使うことも可能です。
インストールするだけでも充分なメリットと言えますが、必要に応じていろいろと使ってみると良いかもしれません。
コメント