All Articles

Ubuntu(64bit)+xamppの環境にxdebugを入れるときのメモ

ちょっとハマったのでメモしておきます。
普段、手軽に複数のPHPバージョンを併用したいので、xampp for Linuxを使ってるんですが、 今更ながらxdebugを入れようとすると上手く動きません。
手順は以下の通り:

# xamppのdevelパッケージを入れる
$ tar xvfz xampp-linux-devel-1.x.x.tar.gz
$ sudo tar xvfz xampp-linux-devel-1.x.x.tar.gz -C /opt

# 続いて、xdebugをソースからコンパイル
$ wget http://xdebug.org/files/xdebug-2.1.1.tgz
$ tar xvfz xdebug-2.1.1.tgz
$ cd xdebug-2.1.1
$ /opt/lampp/bin/phpize
$ ./configure --with-php-config=/opt/lampp/bin/php-config
$ make
$ sudo make install
$ sudo cp -ip /opt/lampp/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so /opt/lampp/lib/php/extensions

あとはphp.iniにxdebugの設定の記述と、プロファイル用のディレクトリを作ります。

$ sudo mkdir /opt/lampp/tmp/xdebug
$ sudo chmod a+rwx -R /opt/lampp/tmp/xdebug

sudo vi /opt/lampp/etc/php.ini

zend_extension = /opt/lampp/lib/php/extensions/xdebug.so
xdebug.profiler_output_dir = "/tmp/xdebug/"
xdebug.profiler_enable = On
xdebug.remote_enable=On
xdebug.remote_host="localhost"
xdebug.remote_port=9000
xdebug.remote_handler="dbgp"
xdebug.remote_log="/opt/lampp/logs/xdebug.log"

で、xamppを再起動すると・・・

Failed loading /opt/lampp/lib/php/extensions/xdebug.so: /opt/lampp/lib/php/extensions/xdebug.so: wrong ELF class: ELFCLASS64

というエラーが出てxdebugがロードできないようです。ぐぐってみると、どうやらxamppは32bit用のia32-libsを使っているようで、私のUbuntuでコンパイルすると64bitのsoファイルができちゃうようで、互換性が無い、という警告みたいです。

32bitでコンパイルしたものの入手

というわけで、xdebug.soは32bit環境でコンパイルしたものを使わないといけないんですが、32bit環境が手元にないし、apt-getで環境構築しなおすかーと思ってたのですが、どうやらKomodo IDEというものに32bitでコンパイル済みのsoファイルが同梱されているみたいです。ここのページ からLinux_x86のIDEをダウンロードして、解凍した中にあるxdebug.soを設置:

$ wget http://downloads.activestate.com/Komodo/releases/7.0.2/remotedebugging/Komodo-PHPRemoteDebugging-7.0.2-70257-linux-x86.tar.gz
$ tar xvfz /Komodo-PHPRemoteDebugging-7.0.2-70257-linux-x86.tar.gz
$ sudo cp -ip /Komodo-PHPRemoteDebugging-7.0.2-70257-linux-x86/5.3/xdebug.so /opt/lampp/lib/php/extensions

これでxamppを再起動するとモジュールのロードが有効になり、phpinfo()にもxdebugが有効になってました。 apt-getで環境を構築してればよかったなーと思った次第です・・・