• このエントリーをはてなブックマークに追加
  • このエントリーをはてなブックマークに追加

非MAMP環境でMacにXdebugを入れてみる

こんにちは。開発部の原田です。

PHPでプログラミングする上でなかなか便利なXdebugを個人のMacに入れてみました。

Macへの導入手順になりますが、備忘録も兼ねてまとめたいと思います。
※非MAMP環境です。

Xdebugとは?

PHPのデバッガです。デバッガとはプログラムのバグの発見や修正(デバッグ)を支援してくれるプログラムのことです。デバッグによく使う「var_dump()」を見やすく整形してくれたり、エラーが出た時どの処理でエラーが出たかまで表示してくれる便利なものです。

…ということで、早速作業に移りましょう。

Xdebugを入れてみよう!

入れる前にまず確認しておかなければいけないことがあります。PHPがデバッグ版ではないことです。

確認方法は、下記コマンドで確認するか

php -i | grep 'Debug Build'

「phpinfo()」を実行して「Debug Build」の項目で分かります。

phpinfoのキャプチャ

この項目が「no」ならデバッグ版ではありません。次に進みます。

ファイルのダウンロード

必要なファイルは http://www.xdebug.org/download.php からダウンロードしてきます。

Xdebugダウンロードページ

バ、バージョン違いが…。どれをダウンロードしていいのか分かりません。どうもPHPの環境によってダウンロードするバージョンが違うのだとか。

そこで調べてみると、 Tailored Installation Instructions(こちらもXdebugのページです) と書かれたページで必要な情報を入れると諸々教えてくれるとのことでした。

リンク先のページに

php -i

の結果か「phpinfo()」のHTMLを貼り付けるとあったので、今回はコマンドの結果を入力してボタンを押すとダウンロードするファイルと手順が表示されました。

入力結果

私の場合だと「xdebug-2.4.0rc1.tgz」ということで、リンクをクリックしてファイルをダウンロードします。

インストール

ここからは先程の手順のページにあったように進めていきます。

ダウンロードしたファイルを適当な箇所に置き、

tar -xvzf xdebug-2.4.0rc1.tgz

を実行してファイルを解凍します。(もしファイルの拡張子が「tar」となっていればコマンドでもファイルの拡張子をそのように変えてください)

続いて解凍したファイルに移動して「phpize」を実行します。

cd xdebug-2.4.0rc1
phpize

この時「phpize」でエラーが起きることがあるのでその場合はそのエラーを解決しなければいけませんが、その解決方法はここでは割愛させていただきます。(私の場合は「autoconf」がないと言われたのでインストールしました。)

成功すると「configure」ができているので、

./configure

で実行します。続いて

make

を実行して「modules」ディレクトリに「xdebug.so」ファイルがあることを確認し、そのファイルをPHPの「extensions」ディレクトリにコピーします。

extensions のパスは上記URLの手順に記載されています。(こちらも私の場合、そのディレクトリがなかったので作成しました)

その後、「php.ini」に上記でコピーした「xdebug.so」ファイルを絶対パスで追加します。

zend_extension = xdebug.soのファイルのパス

これでXdebugのインストール作業は完了です。

確認

そうして

php -m

で確認すると
Xdebugインストール確認
インストール前には何もなかった [Zend Modules] の項目の下に「Xdebug」が追加されました!

しかしこのままではXdebugは効いてくれないのでApacheを再起動します。

sudo apachectl stop
sudo apachectl start

(多分 restart でも大丈夫だと思いますが、私の場合再起動ではXdebugが効いてくれなかったので停止・起動を行いました)

phpinfo_xdebug

phpinfoの結果で上記のように Xdebug が追加されていれば成功です。

Xdebugによる表示

Xdebug追加前後のFatal表示

Xdebugを入れると、上記のように時間やメモリ、どこまで実行されてエラーが起きたかが分かります。

Xdebug追加前後のvar_dump()表示

また var_dump() の表示も、通常の1行表示ではなくちゃんと整形されて表示されるので非常に見やすくなっています。

Xdebugを入れる前は var_dump() をわざわざHTMLの <pre> で囲って表示するようにしていましたが、Xdebugを入れることで <pre> を入れずに var_dump() を実行するだけで改行や文字色を変えて表示してくれるので、手間が省けました。

おわりに

「make」でうまくいかなかったので Homebrew で Apache と PHP をインストールしなおしたりと色々ありましたが、一度Xdebugを入れるとその後のデバッグが便利になるので追加する価値はあるんじゃないかなと思います。

原田