こんにちは、タカフです。
PHPで開発をする時に強力なデバッグ機能を使えるようにするのが、そう Xdebug ですね。
Xdebugがあると本当にデバッグ作業が捗ります。
XAMPPをインストールしたなら絶対にXdebugもインストールしたほうがいいですね。
Windows版だとXdebugのサイトから対象のxdebug.dllをダウンロードするだけですが、Mac版だとxdebug.soファイルが必要となりさらにソースコードからコンパイルしなくてはいけないようなので、
本日はその内容を記事にします。
MacにXAMPPをインストールする
この方法は僕のこちらの記事を参照してください。
MacのXAMPPにXdebugをインストールする
XdebugのモジュールはWindowsなら下記からダウンロード可能ですが、
https://xdebug.org/download.php
Macの場合はdllではなくsoファイルが必要なので、ちょっと手順が違います。
XdebugはPCにインストールしたXAMPPのバージョンと合わせる必要があるのですが、上記のXdebugのダウンロードページを見てもよくわからないので、Xdebugのサイトで教えてもらいます。
Xdebugインストール手順を表示する
以下のページにアクセスします。
ここのtextareaのところにインストールしたXAMPPのPHP情報を貼り付ければインストールすべきXdebugのバージョンもわかるとのことです。
ローカルPCにXAMPPをインストールしたならば、そのローカルサーバーのドキュメントルートのどこかに 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にパスが通るようにしましょう。
$ vi ~/.bash_profile
で編集モードにしてXAMPPでインストールしたphpへのパスを$PATHに追加して保存します。
export PATH=/Applications/XAMPP/bin:$PATH
今の記述を有効化しましょう。
$ 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に関する記述もします。
僕は以下のように追記しました。
[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でデバッグ実行してみます。
デバッグ出来た。。。ビルドのところでハマったので地味に嬉しいです。。(泣)
この記事は恐らく将来の自分も助けてくれる良記事になったと思います。
現場からは以上です。