@原文url:http://www.cnblogs.com/dcb3688/p/4608015.html
@netbeans官方调试php代码说明:https://netbeans.org/kb/docs/php/debugging_zh_CN.html
个人认为,对有有经验的程序员,使用echo、print_r()、print_f()、var_dump()等函数足以调试php代码,如果你不喜欢这样的话,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_append = 0
xdebug.profiler_enable = 1
xdebug.profiler_enable_trigger = 0
xdebug.profiler_output_dir ="D:\phpStudy\tmp\xdebug"
xdebug.trace_output_dir ="D:\phpStudy\tmp\xdebug"
xdebug.profiler_output_name = "cache.out.%t-%s"
xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
zend_extension="D:\phpStudy\php\php-5.3.29-nts\ext\php_xdebug.dll"
xdebug.remote_mode=req
xdebug.remote_host=localhost
xdebug.remote_port=9001 //这里配置为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引擎的扩展
所以 正确的方法是
zend_extension=php_xdebug-2.4.1-7.0-vc14-nts.dll
在php.ini 中还要设置
output_buffering = Off
三,配置NetBeans
在NetBeans的 工具-选项-php 中配置(NetBeans版本8.2)
1,工具-选项-常规,web浏览器设置为Firefox,无代理,然后测试连接。
2,工具-选项-php-常规,php5解释器选择php.exe路径(例如:D:\phpStudy\php\php-5.3.29-nts\php.exe)
3,工具-选项-php-调试器端口(9001,和上边php.ini保持一致),会话ID:netbeans-xdebug(和上边php.ini中的xdebug.idekey保持一致)
在这里面也有个坑
就是调试器端口, 网上一般都是9000,但是有没有考虑用Nginx的感受,在用nginx作为服务器代理的时候,nginx一般使用的就是9000
这就是为什么我们在配置php的xdebug时候使用9001端口, (php.ini 中的端口要与NetBeans中的调试器端口一致)
会话ID 与 xdebug.idekey 保持一致
不然同样提示:“等待NetBeans连接xdebug”
四,最好重启下netbeans,再开始调试。
配置都保存了之后,还是连接失败的话,就重启一下netbeans吧。很多人都知道,该了PHP.INI要重启服务器。但是没想过netbeans的有些配置改了之后,也要重启才能生效。
五,开始调试
---注意,只有在netbeans中新建的项目,才可以进行调试。并且进行了如下配置的。
---选择默认的本地web站点即可
---新建完成导入后,打开项目
打开项目,然后选择 菜单-调试-调试项目,一般会在默认浏览器中弹出http://localhost/weiqing/index.php?XDEBUG_SESSION_START=netbeans-xdebug,后边红色参数是xdebug参数,必须要有。
!!!重点!!!如果想单独调试某个url页面,在页面后面加上这个参数?XDEBUG_SESSION_START=netbeans-xdebug或者& XDEBUG_SESSION_START=netbeans-xdebug,然后打开就能开始调试了。
1,经常用到的就是F7(步入,逐行执行脚本,一行一行的调试代码),F5(继续,跳的代码比较多),ctrl+F7(步出,跳出当前函数或者类),具体可以参考官方文档。
---使用调试器工具栏
2,在下边可以监视变量的值,和断点数量。
@注意问题:
1,调试过程中,有时候中间会报错(套接字异常等),跳出调试。所以调试过程中,在重要地方设置断点,这样即使跳出了,也可以重新调试并快速调试到设置断点地方。
2,有时候会出现等待连接netbeans xdebug或者NetBeans-xdebug正在连接情况,重启下netbeans即可解决。