xampp for Linux にXdebugをインストール その1

LAMPP環境を簡単に構築できるXAMPP
さらに便利にするべく、ここにXdebugをインストールしたいと思い立つ。
やってみよう。

以下環境。

  • CentOS4
  • XAMPP Linux 1.6 (xampp-linux-1.6.tar.gz)
  • Development package 1.6 (xampp-linux-devel-1.6.tar.gz)

以下、作業。

XAMPPインストール

XAMPP本体と、同じバージョンのDevelopment packageをインストールする。

[root@hoge ~]# wget http://downloads.sourceforge.net/xampp/xampp-linux-1.6.tar.gz?modtime=1171706889&big_mirror=1
[root@hoge ~]# wget http://downloads.sourceforge.net/xampp/xampp-linux-devel-1.6.tar.gz?modtime=1171706914&big_mirror=1
[root@hoge ~]# tar xzf xampp-linux-1.6.tar.gz -C /opt/
[root@hoge ~]# tar xzf xampp-linux-devel-1.6.tar.gz -C /opt/

Xdebugインストール

PHP5にインストール

[root@hoge ~]# /opt/lampp/lampp php5
[root@hoge ~]# wget http://xdebug.org/link.php?url=xdebug200rc4
[root@hoge ~]# tar xzf xdebug-2.0.0RC4.tgz
[root@hoge ~]# cd xdebug-2.0.0RC4
[root@hoge xdebug-2.0.0RC4]# /opt/lampp/bin/phpize
[root@hoge xdebug-2.0.0RC4]# ./configure --with-php-config=/opt/lampp/bin/php-config
[root@hoge xdebug-2.0.0RC4]# make
[root@hoge xdebug-2.0.0RC4]# make install
	Installing shared extensions:     /opt/lampp/lib/php/extensions/no-debug-non-zts-20060613/

PHP4にインストール

[root@hoge ~]# cd
[root@hoge ~]# /opt/lampp/lampp php4
[root@hoge ~]# rm -rf xdebug-2.0.0RC4
[root@hoge ~]# tar xzf xdebug-2.0.0RC4.tgz
[root@hoge ~]# cd xdebug-2.0.0RC4
[root@hoge xdebug-2.0.0RC4]# /opt/lampp/bin/phpize
[root@hoge xdebug-2.0.0RC4]# ./configure --with-php-config=/opt/lampp/bin/php-config
[root@hoge xdebug-2.0.0RC4]# make
[root@hoge xdebug-2.0.0RC4]# make install
	Installing shared extensions:     /opt/lampp/lib/php/extensions/no-debug-non-zts-20020429/

バージョン変更スクリプトの修正

XAMPPでPHPのバージョンを切り替えた際に、使用するXdebugモジュールも切り替わるようにしなければならない。
XAMPPがPHPのバージョンを切り替える処理を追うと、

/opt/lampp/share/lampp/activatephp


でその処理が全部行われている模様。ここに使用するXdebugモジュールを切り替える処理も追記してみた。

まず、モジュールファイルにバージョン名を付けて移す。

[root@hoge ~]# mv /opt/lampp/lib/php/extensions/no-debug-non-zts-20020429/xdebug.so /opt/lampp/lib/php/extensions/xdebug-4.4.5.so
[root@hoge ~]# mv /opt/lampp/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so /opt/lampp/lib/php/extensions/xdebug-5.2.1.so

モジュールファイルへのシンボリックリンクを切り替える処理を追記

[root@hoge ~]# vim /opt/lampp/share/lampp/activatephp 
rm /opt/lampp/lib/php/extensions/xdebug.so 2> /dev/null ln -s /opt/lampp/lib/php/extensions/xdebug-$VERSION.so /opt/lampp/lib/php/extensions/xdebug.so /opt/lampp/lampp restartapache

最後に、php.iniにモジュールを使用するよう設定を追記。

[root@hoge ~]# vim /opt/lampp/etc/php.ini
[xdebug] zend_extension=”/opt/lampp/lib/php/extensions/xdebug.so” xdebug.profiler_enable=1 xdebug.profiler_output_dir=”/tmp”

あれ?PHP4だとだめだ・・・

PHP5だと上手くいっているようだけれど、
PHP4で動かそうとすると

Failed loading /opt/lampp/lib/php/extensions/xdebug.so: /opt/lampp/lib/php/extensions/xdebug.so: undefined symbol: zend_throw_exception_hook

と言われてモジュールがロードされない。

どうやらコンパイル方法に問題があるみたい。
XAMPPのPHPのバージョンを切り替えると、使用するphpizeスクリプトは変わっても、phpizeが使用するAPIバージョンが変わらない。
PHP4でもPHP5でも以下のように表示される。

[root@hoge xdebug-2.0.0RC4]# /opt/lampp/bin/phpize -v
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20060613
Zend Extension Api No:   220060519

このあたりに問題がありそうだなー。
というわけで引き続き調査。

Leave a Reply