netbeans工具使用xdebug断点调试php源码

对有有经验的程序员,使用echo、print_r()、print_f()、var_dump()等函数足以调试php代码,如果需要在IDE工具中使用断点调试,xdebug就是一个非常好的php调试工具。对于不熟悉的代码,可以用Xdebug一步一步的查看请求过程和代码执行过程。

准备工作
本地部署的server环境,推荐用phpStudy(内置xdebug),开启php扩展就可以了,不用单独下载xdebug。(下载与php版本对应的xdebug:http://www.xdebug.org)


配置以下三处
一、配置php.ini,需注意是否是使用集成环境。找到相应的php.ini,例如下边是phpStudy的php5.3的php.ini,其中黑色部分是系统默认的,红色是手动添加的。

[XDebug]
xdebug.profiler_output_dir="D:phpStudy	mpxdebug"
xdebug.trace_output_dir="D:phpStudy	mpxdebug"
zend_extension="D:phpStudyphpphp-5.6.27-ntsextphp_xdebug.dll"
xdebug.remote_enable = 1
xdebug.remote_mode=req
; 注意,remote_host的值如果填写localhost不能用,则填写127.0.0.1
xdebug.remote_host=127.0.0.1
; 注意,端口和idekey要与netbeans中配置一样
xdebug.remote_port=9001
xdebug.idekey=netbeans-xdebug

 

二、重启apache服务器,查看phpinfo()里边是否有xdebug,记录下idekey(我的是netbeans-xdebug)。


这一步非常重要,因为坑就在这。。。
如果使用NetBeans调试php时,一直提示“等待NetBeans连接xdebug”,就要使用命令行查看已经加载的模块,查看xdebug是否正确加载。
在命令行下输入:php -m

当提示:PHP Warning: Xdebug MUST be loaded as a Zend extension in Unknown on line 0,意思就是xdebug必须加载到zend modules的扩展中。
extension意为基于php引擎的扩展,zend_extension意为基于zend引擎的扩展,所以正确的方法是设置php.ini配置文件:zend_extension=php_xdebug-2.4.1-7.0-vc14-nts.dll。如果使用phpStudy,启用xdebug扩展的时候,php.ini配置文件会自动增加这个配置。
在php.ini 中还要设置:output_buffering = Off
  
三、配置NetBeans
在NetBeans的 工具-选项-php 中配置(NetBeans版本8.2)

  1. 工具-选项-php-常规,php5解释器选择php.exe路径(例如:D:phpStudyphpphp-5.6.27-ntsphp.exe)
  2. 工具-选项-php-调试器端口(9001,和上边php.ini保持一致),会话ID:netbeans-xdebug(和上边php.ini中的xdebug.idekey保持一致)    

  

在这里面也有个坑,就是调试器端口,网上一般都是9000,但是有没有考虑使用Nginx的情况,在用nginx作为服务器代理的时候,nginx一般使用的就是9000端口!这就是为什么我们在配置php的xdebug时候使用9001端口。
        php.ini中的端口和idekey要与NetBeans中的“调试器端口”和“会话ID”保持一致,不然同样提示:“等待NetBeans连接xdebug”!

四、配置好了之后,重启下netbeans,再开始调试。
  配置都保存了之后,还是连接失败的话,就重启一下netbeans吧。很多都知道,修改了PHP.INI要重启服务器。但是没想过netbeans的有些配置改了之后,也要重启才能生效

五、开始调试
  打开项目(现有项目,无需新建项目),然后选择 菜单-调试-调试项目,一般会在默认浏览器中弹出http://localhost/index.php?XDEBUG_SESSION_START=netbeans-xdebug,后边红色参数是xdebug参数,必须要有。  
  !!!重点!!!如果想单独调试某个url页面,在页面后面加上这个参数?XDEBUG_SESSION_START=netbeans-xdebug或者& XDEBUG_SESSION_START=netbeans-xdebug,然后打开就能开始调试了。

参考文章:
NetBeans配置Xdebug 远程调试PHP (http://blog.csdn.net/21aspnet/article/details/47756651)
关于netbeans断点调试php的问题 (https://www.oschina.net/question/232352_2209537)
在 NetBeans IDE 中调试 PHP 源代码 (https://netbeans.org/kb/docs/php/debugging_zh_CN.html)
使用netbeans进行PHP团队开发和基于xdebug进行多人远程调试 (http://starlight36.com/post/netbeans-use-for-php-team-with-xdebug)
php断点调试工具--NetBeans+Xdebug调试php方法 (http://www.cnblogs.com/feichengwulai/articles/6252039.html)

版权声明:本文采用署名-非商业性使用-相同方式共享(CC BY-NC-SA 3.0 CN)国际许可协议进行许可,转载请注明作者及出处。
本文标题:netbeans工具使用xdebug断点调试php源码
本文链接:http://www.cnblogs.com/sochishun/p/7455032.html
本文作者:SoChishun (邮箱:14507247#qq.com | 博客:http://www.cnblogs.com/sochishun/)
发表日期:2017年8月30日

原文地址:https://www.cnblogs.com/sochishun/p/7455032.html