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/activatephprm /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
このあたりに問題がありそうだなー。
というわけで引き続き調査。



