在上次安装完FreeBSD+Apache+PHP的环境后,在上面跑一个PHP的系统感觉非常慢,于是想装一个Xdebug来调试希望能找出问题的所在,以下是我的安装过程中间也碰到了一些问题。

[安装配置]
1、要在FreeBSD下安装Xdebug得通过源代码包进行编译安装,首先去http://www.xdebug.org官方网站下载源代码包,我下载的[2008-04-09]Source: xdebug 2.0.3(这个版本在编译过程中会出错,下面详细讲解)。

2、开始编译Xdebug

# tar -xvf xdebug-2.0.3.tgz
# cd xdebug-2.0.3
# phpize
# ./configure --enable-xdebug --with-php-config=/usr/local/php/bin/php-config
# make
/bin/sh /usr/home/ly/xdebug-2.0.3/libtool --mode=compile gcc  -I. -I/usr/home/ly/xdebug-2.0.3 -DPHP_ATOM_INC -I/usr/home/ly/xdebug-2.0.3/include -I/usr/home/ly/xdebug-2.0.3/main -I/usr/home/ly/xdebug-2.0.3 -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend  -DHAVE_CONFIG_H  -g -O0   -c /usr/home/ly/xdebug-2.0.3/xdebug.c -o xdebug.lo
gcc -I. -I/usr/home/ly/xdebug-2.0.3 -DPHP_ATOM_INC -I/usr/home/ly/xdebug-2.0.3/include -I/usr/home/ly/xdebug-2.0.3/main -I/usr/home/ly/xdebug-2.0.3 -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -DHAVE_CONFIG_H -g -O0 -c /usr/home/ly/xdebug-2.0.3/xdebug.c         -fPIC -DPIC -o xdebug.lo
/usr/home/ly/xdebug-2.0.3/xdebug.c:172: warning: initialization makes integer from pointer without a cast
/bin/sh /usr/home/ly/xdebug-2.0.3/libtool --mode=compile gcc  -I. -I/usr/home/ly/xdebug-2.0.3 -DPHP_ATOM_INC -I/usr/home/ly/xdebug-2.0.3/include -I/usr/home/ly/xdebug-2.0.3/main -I/usr/home/ly/xdebug-2.0.3 -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend  -DHAVE_CONFIG_H  -g -O0   -c /usr/home/ly/xdebug-2.0.3/xdebug_code_coverage.c -o xdebug_code_coverage.lo
gcc -I. -I/usr/home/ly/xdebug-2.0.3 -DPHP_ATOM_INC -I/usr/home/ly/xdebug-2.0.3/include -I/usr/home/ly/xdebug-2.0.3/main -I/usr/home/ly/xdebug-2.0.3 -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -DHAVE_CONFIG_H -g -O0 -c /usr/home/ly/xdebug-2.0.3/xdebug_code_coverage.c         -fPIC -DPIC -o xdebug_code_coverage.lo
/usr/home/ly/xdebug-2.0.3/xdebug_code_coverage.c: In function 'xdebug_find_jump':
/usr/home/ly/xdebug-2.0.3/xdebug_code_coverage.c:148: error: 'union ' has no member named 'jmp_addr'/usr/home/ly/xdebug-2.0.3/xdebug_code_coverage.c: In function 'prefill_from_oparray':/usr/home/ly/xdebug-2.0.3/xdebug_code_coverage.c:233: warning: assignment makes pointer from integer without a cast/usr/home/ly/xdebug-2.0.3/xdebug_code_coverage.c: In function 'prefill_from_function_table':/usr/home/ly/xdebug-2.0.3/xdebug_code_coverage.c:272: warning: comparison between pointer and integer/usr/home/ly/xdebug-2.0.3/xdebug_code_coverage.c: In function 'xdebug_prefill_code_coverage':/usr/home/ly/xdebug-2.0.3/xdebug_code_coverage.c:312: warning: comparison between pointer and integer*** Error code 1

Stop in /usr/home/ly/xdebug-2.0.3.

注:在扫行make命令后突然报错禁止了编译google了半天无法找到相关解决办法,在官方的bugs上也找到了一样的报错信息但无人解答是否原因和解决办法,于是试想装一下xdebug-2.0.2看是否也报同样的错误,在官方网站下载xdebug-2.0.2的源代码包开始编译,到执行make命令这里时期持着不报错,果然没有让我失望顺利通过make,然后接着下面的编译。
http://www.xdebug.org/archives/xdebug-dev/1427.html
http://inhalt.serviert.de/wissen/gpl/php/php5-xdebug-debugger-profiler-development-tool-unter-debian-etch-und-apache2
贴上我找的相关资料。 

3.接着make命令往下编译

# make install
Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20020429/
# cp /usr/local/php/lib/php/extensions/no-debug-non-zts-20020429/libxdebug.so.0.0 /usr/local/php/lib/php/extensions/xdebug.so

注:phpize是用来生成 configure 文件,当你安装PHP的时候指定了–prefix参数时phpize会报错应该加上你安装PHP的路经如:/usr/local/php/bin/phpize。而红色部分则为PHP的安装路经,安装成功就成生/usr/local/php/lib/php/extensions/no-debug-non-zts-20020429/libxdebug.so.0.0文件,/usr/local/php/lib/php/extensions/no-debug-non-zts-20020429这个路经试PHP的版本不同也会不同。 

3.修改php.ini配置Xdebug

# vi /usr/local/php/lib/php.ini
[Xdebug]
extension = "/usr/local/php/lib/php/extensions/xdebug.so"
xdebug.auto_trace = on
xdebug.auto_profile = on
xdebug.collect_params = on
xdebug.collect_return = on
xdebug.profiler_enable = on
xdebug.trace_output_dir = "/tmp/xdebug"
xdebug.profiler_output_dir = "/tmp/xdebug"

xdebug.dump.GET = *
xdebug.dump.POST = *
xdebug.dump.COOKIE = *
xdebug.dump.SESSION = *

xdebug.var_display_max_data = 4056
xdebug.var_display_max_depth = 5

注:修改php.ini,去除Zend的配置信息,增加以上配置信息支持XDebug扩展

4.重启Apache完成安装

# mkdir -p /tmp/xdebug
# chmod 755 /tmp/xdebug
# /usr/local/apache2/bin/apachectl start

参考的相关资料:
http://www.xdebug.org/docs/install
http://blog.s135.com/read.php/257.htm
http://hi.baidu.com/leakon/blog/item/1e4c024f741bc934aec3ab72.html