必見!MacのXAMPPでXdebugを有効にする方法

こんにちは、タカフです。

PHPで開発をする時に強力なデバッグ機能を使えるようにするのが、そう Xdebug ですね。

Xdebugがあると本当にデバッグ作業が捗ります

XAMPPをインストールしたなら絶対にXdebugもインストールしたほうがいいですね。

Windows版だとXdebugのサイトから対象のxdebug.dllをダウンロードするだけですが、Mac版だとxdebug.soファイルが必要となりさらにソースコードからコンパイルしなくてはいけないようなので、

本日はその内容を記事にします。

MacにXAMPPをインストールする

この方法は僕のこちらの記事を参照してください。

MacにXAMPPをインストールする方法(初心者向け)

MacのXAMPPにXdebugをインストールする

XdebugのモジュールはWindowsなら下記からダウンロード可能ですが、

https://xdebug.org/download.php

Macの場合はdllではなくsoファイルが必要なので、ちょっと手順が違います。

XdebugはPCにインストールしたXAMPPのバージョンと合わせる必要があるのですが、上記のXdebugのダウンロードページを見てもよくわからないので、Xdebugのサイトで教えてもらいます。

Xdebugインストール手順を表示する

以下のページにアクセスします。

https://xdebug.org/wizard.php

ここのtextareaのところにインストールしたXAMPPのPHP情報を貼り付ければインストールすべきXdebugのバージョンもわかるとのことです。

ローカルPCにXAMPPをインストールしたならば、そのローカルサーバーのドキュメントルートのどこかに phpinfo.php というファイルでも作って、以下のようなコードを記述しましょう。

phpinfo.php
<?php

phpinfo();  

これでこのファイルにブラウザからアクセスするとphpinfoの情報が表示されますが、

ほしいのはこのhtmlソースなので、Chromeならば、メニューバーの「表示」ー「開発/管理」ー「ソースを表示」をクリックして、htmlソースを表示させます。

htmlソースを表示させたなら全選択してコピーします。

これを先程のtextareaのところに貼り付けて「Analyse my phpinfo() output」ボタンをクリックします。

するとインストール手順のページが表示されますので、この手順通りに進めていきます。

まず、Download xdebug-2.7.2.tgz のようなリンクをクリックします。tgzファイルがダウンロード出来ます。

XAMPP内のphpコマンドにパスを通す

次に色々コマンドを打っていきますが、

その前に、Macでデフォルトで入っているphpが使われるとうまくいかない事あるので、XAMPPでインストールしたphpにパスが通るようにしましょう。

terminal
$ vi ~/.bash_profile

で編集モードにしてXAMPPでインストールしたphpへのパスを$PATHに追加して保存します。

.bash_profil
export PATH=/Applications/XAMPP/bin:$PATH

今の記述を有効化しましょう。

terminal
$ source ~/.bash_profile

xdebug.soのコンパイル

さて、今回はMacが対象ですので、以下のコマンドで解凍してコンパイルまでやります。

コード
$ tar -xzvf xdebug-2.7.2.tgz
$ cd xdebug-2.7.2
$ phpize

僕の場合はここまでで以下の出力がされています。

コード
Configuring for:
PHP Api Version:         20180731
Zend Module Api No:      20180731
Zend Extension Api No:   320180731
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.

autoconfがないと怒られているようなので、homebrewを使ってインストールしましょう。

コード
$ brew install autoconf

もう一度phpizeを実行したら無事通ったようです。

コード
$ phpize
Configuring for:
PHP Api Version:         20180731
Zend Module Api No:      20180731
Zend Extension Api No:   320180731

これでconfigureが出来るので、configure、makeと実行していきます。

コード
$ ./configure
$ make

そうしたらこのようなエラーが出ました

コード
/Users/taksuzuki/Downloads/xdebug-2.7.2/xdebug.c:25:10: fatal error: 'php.h'
      file not found
#include "php.h"
         ^~~~~~~
1 error generated.

要はphp.hないってことなので、

こちらの記事を参考にして、XAMPP内のphp.hを参照するようCCPFLAGを加えてconfigureしてみます。

コード
$ CCPFLAG=-I/Applications/XAMPP/xamppfiles/include/php/main ./configure
$ make

通りました!

コード
Build complete.
Don't forget to run 'make test'.

xdebug.soファイルのコピー

次にxdebug.soをコピーですが、Permission deniedになるのでsudoで。

コード
$ sudo cp modules/xdebug.so /Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20180731/

これでxdebug.soの準備が整いました。

php.iniでXdebugを有効化する

xdebug.soのファイルがコピー出来たら、php.iniを編集していきます。ここで注意ですが、
Xdebugのインストール手順だけだと、zend_extensionのパスを書くだけですが、それだと動かないのでxdebugに関する記述もします。

僕は以下のように追記しました。

php.ini
[XDebug]
zend_extension = /Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20180731/xdebug.so
; 1:有効化, 0:無効化
xdebug.remote_enable=1
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_handler=dbgp

記述して保存したらapacheをXAMPPアプリからrestartしてみます。

PHPStormでXDebugによるデバッグ実行

phpstormでデバッグ実行してみます。

デバッグ出来た。。。ビルドのところでハマったので地味に嬉しいです。。(泣)

 

この記事は恐らく将来の自分も助けてくれる良記事になったと思います。

現場からは以上です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です