一.安装
1.下载 xdebug并解压 xdebug 配置xdebug源码
wget http://xdebug.org/files/xdebug-2.3.2.tgz
tar -zxf xdebug-2.2.7.tgz
/usr/bin/phpize /*phpize的命令是用来准备一个PHP扩展的构建环境.简单说就是生成一个configure配置脚本*/
2.编译安装xdebug
<span style="white-space:pre"> </span>./configure --with-php-config=/usr/bin/php-config --prefix=/usr/lib64/php/modules --enable-xdebug
/**
* --with-php-config 这个参数是指定php版本,如果主机上只有一个php不需要加
* --prefix 指定安装路径
* --enable-xdebug 启用xdebug
**/
make
make install
/**
* Installing shared extensions: /usr/lib64/php/modules/
* 看到这一行表示安装成功了
* 安装/usr/lib64/php/modules/这个目录
**/
4.php起开xdebug扩展
<span style="white-space:pre"> </span>查看下/usr/lib64/php/modules是否存在xdebug.so
ll /usr/lib64/php/modules | grep xdebug
在php.ini中增加zend_extension=/usr/lib64/php/modules/xdebug.so /*这里必须填写完整路径*/(如果存在则去掉注释即可)
或者在php.d文件夹中新建一个xdebug.ini文件, 写入zend_extension=xdebug.so并保存
vim /etc/php.d/xdebug.ini
重启apache
service httpd restart
查看php是否加载了 xdebug
php -i |grep xdebug | head
/**
* php -i = phpinfo()
* head -n 5 显示前5行,默认是前10行
*/
这样就算安装成功了,但是使用的话还需要配置一些参数
5.xdebug参数
详细参数请参考: http://xdebug.org/docs/all_settings
详细函数请参考: http://xdebug.org/docs/all_functions
先介绍一些基本配置,详细的请自己研究文档
xdebug.auto_trace=on /*自动打开“监测函数调用过程”的功模*/
xdebug.profiler_enable=on /*打开效能监测器.*/
xdebug.trace_output_dir="/usr/tmp/xdebug/trace" /*设定函数调用监测信息的输出文件的路径.*/
xdebug.profiler_output_dir="/usr/tmp/xdebug/profiler" /*设定效能监测信息输出文件的路径.*/
;xdebug.remote_enable=on /*设置监听主机和端口的debug客户端*/
;xdebug.remote_handler=dbgp /*2.1开始只支持dbgp,所以也不需要设置*/
;xdebug.remote_host=localhost /*debug客户端正在运行的主机,可以使用主机名或IP*/
;xdebug.remote_port=9000 /*xdebug连接远程主机的端口,最好不要修改*/
配置完成后,需要重启服务器
备注: /tmp/xdebug/profiler和/tmp/xdebug/trace权限改成777,不然apache没有写入权限.如果这两个目录下面还是没有生成*.out文件,请检查路径是否填写正确,并关闭"selinux".
二.使用
1.profiler主要用来PHP性能测试
在windows下面查看profiler文件请使用 wincachegrind
下载地址 http://sourceforge.net/projects/wincachegrind/files/latest/download
在linux下使用KCacheGrind这个工具,但必须安装kde环境,所以还是使用windows的比较方便
2.debug调试功能
<?php
$a = array(1, 2, 3);
$b =& $a;
$c =& $a[2];
xdebug_debug_zval('a');
xdebug_debug_zval("a[2]");
?>
一般框架都提供debug调试功能,所以该功能挺鸡肋的,但是如果自己开发框架或者不用框架写,可以考虑使用