对有有经验的程序员,使用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\tmp\xdebug"
xdebug.trace_output_dir="D:\phpStudy\tmp\xdebug"
zend_extension="D:\phpStudy\php\php-5.6.27-nts\ext\php_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)
- 工具-选项-php-常规,php5解释器选择php.exe路径(例如:D:\phpStudy\php\php-5.6.27-nts\php.exe)
- 工具-选项-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)
|
请发表评论