一、安装xdebug

1、编译安装xdebug,也可以使用pecl install xdebug

wget http://xdebug.org/files/xdebug-2.3.2.tgz
tar -zxvf xdebug-2.3.2.tgz
cd xdebug-2.3.2
phpize
./configure --enable-xdebug --with-php-config=/data/php/bin/php-config
make && make install

这一步会 生成xdebug.so文件

2、添加配置文件

zend_extension =xdebug.so
zend_debugger.allow_hosts=127.0.0.1
zend_debugger.expose_remotely=always
zend_debugger.httpd_uid=-1
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.profiler_output_dir=/tmp/xdebug
xdebug.trace_output_name = trace.%c.%p xdebug.profiler_output_name=cachegrind.out.%s
xdebug.dump.GET = *
xdebug.dump.POST = *
xdebug.dump.COOKIE = *
xdebug.dump.SESSION = *
xdebug.var_display_max_data = 4056
xdebug.var_display_max_depth = 5 xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9010
xdebug.remote_autostart=1

 3、验证

可以通过phpinfo查看

二、安装vim插件

1、下载

wget http://www.vim.org/scripts/download_script.php?src_id=7285

下载完毕后,将解压将文件放入$HOME/.vim/plugin (mkdir ~/.vim/plugin)

然后访问,http://localhost/blog/index.php?XDEBUG_SESSION_START=1

新建.vimrc文件,加入配置如下:

let g:debuggerMaxDepth = 5

let g:debuggerPort = 9010

注意:要与xdebug.ini中端口配置一致。

2、调试

用vim打开此文件,用可 :Bp 设置断点,然后安 F5 键, 你将会看见waiting for a new connection on port 9000 for 5 seconds… ,此时在5秒内刷新刚才那个页面,即可在vim中看到调试界面。

如果出现 <type 'exceptions.AttributeError'>, AttributeError("DbgProtocol instance has no attribute 'stop'", 则说明没有配置成功,

1、xdebug.remote_* 没有配置好

2、要么是url尾部上没有加入 ?XDEBUG_SESSION_START=1

3、要么是你没有在5秒内刷新页面

注意事项

实际过程中,如果你发现安装完成仍然无法正常的调试PHP,极可能是下面的原因造成的:

一、Xdebug加载不成功

可能是由于PHP是”Debug Build”,那么php.ini里不应当用“zend_extension=/<extension_dir>/xdebug.so”,而应该用“zend_extension_debug=/<extension_dir>/xdebug.so”;

其它方面就是要注意xdebug.so路径是否正确,Apache服务或者是fastcgi服务有没有重启。

二、 调试会话已经过期

XDebug 通过一个Cookie来判断你是否进行调试对话,请注意这个Cookie的过期时间是1个小时。

三、SeLinux

修改配置文件/etc/selinux/config,将”SELINUX=”那一句配置改成”SELINUX=disabled”,然后重启机器。

最新文章

  1. Maven实战系列文章
  2. TypeScript Generics(泛型)
  3. composer install 卡壳
  4. java 22 - 22 多线程之 匿名内部类的方式实现多线程
  5. ORACLE SQL前端补0的三种方式。
  6. java-访问权限
  7. 聊一聊 Android 6.0 的运行时权限
  8. spring-security3.2.5实现中国式安全管理(转)
  9. CentOS克隆机器步骤,图文教程
  10. yum 安装 nfs,rpcbind 出现错误 libc.so.6(GLIBC_2.14)(64bit) is needed by
  11. [COGS 2583]南极科考旅行
  12. Dynamics CRM2013 ScLib::AccessCheckEx failed
  13. luogu P5320 [BJOI2019]勘破神机
  14. redis的雪崩与穿透原理的浅理解
  15. 深入理解 JavaScript 执行上下文和执行栈
  16. django源码分析 python manage.py runserver
  17. FortiGate路由模式--静态地址线路上网配置
  18. zabbix的启动和关闭脚本
  19. sencha touch 在线实战培训 第一期 第六节
  20. 经典全屏滚动插件fullPage.js

热门文章

  1. .NET:如何让线程支持超时?
  2. [翻译] LASIImageView - 显示进度指示并异步下载图片
  3. TOMCAT6热部署配置
  4. Java JDBC 基础知识
  5. 开篇-QT完全手册
  6. Java IO 体系结构
  7. 24.Semaphore
  8. 使用socket编程实现一个简单的文件服务器
  9. C语言编译器不检查数组下标越界
  10. permission 权限 列表 6.0 运行时【案例】