php是执行在服务器上的脚本程序,通常调试bug,直接在浏览器页面就可以打印出错误信息,凭此基本能解决所有bug,但是有时候,可以说大多数时候,php会直接处理客户端的请求,作为数据接口传递数据,没有任何的ui界面,这样对于复杂的逻辑调试起来就非常困难,当然你可以使用log,把所有的运行信息打印到一个外部文本中,可是习惯了ide断点单步执行的我们对于这种原始的办法是无法接受的。下面就要描述使用流行的XDebug来远程调试,达到的目的是,如果有客户端(手机app,pc应用,浏览器... ...)请求了php,那么就需要在我的php中断点处自动停止,并实时显示所有变量的值,指针的变化。
第一步:下载XDebug
下载xdebug程序dll,下载之前,写一个php,代码就这些。
1 <?php 2 phpinfo(); 3 ?>
在浏览器上打开这个php,按住CTRL+A再按CTRL+C复制整个页面,这样复制:
在浏览器上打开这个网址:http://xdebug.org/wizard.php,在页面的大文本框里边CTRL+V,将上面复制的内容复制进去
什么都不用,直接点击红框中的按钮,稍等,会出现页面:
下载上述框选的dll,并记录下下面框选的这一行
zend_extension = C:WebEnvironmentphp-5.5.5extphp_xdebug-2.3.2-5.5-vc11-x86_64.dll
到此为止,我们准备好了xdebug。
第二步:配置xdebug
打开php的目录,找到ext文件夹,把下载好的xdebug的dll复制进去。
打开php.ini文件,在文件末尾加上这些配置代码:
[XDebug]
zend_extension = C:WebEnvironmentphp-5.5.5extphp_xdebug-2.3.2-5.5-vc11-x86_64.dll
;是否开启自动跟踪
xdebug.auto_trace= On
;是否开启异常跟踪
xdebug.show_exception_trace= On
;是否开启远程调试自动启动
xdebug.remote_autostart= On
;是否开启远程调试
xdebug.remote_enable= On
;允许调试的客户端IP
xdebug.remote_host=localhost
;远程调试的端口(默认9000)
xdebug.remote_port=9000
;调试插件dbgp
xdebug.remote_handler=dbgp
;是否收集变量
xdebug.collect_vars= On
;是否收集返回值
xdebug.collect_return= On
;是否收集参数
xdebug.collect_params= On
;是否开启调试内容
xdebug.profiler_enable=On
上面的代码加好之后,关闭php.ini,重启Apache。到此为止,我们便设置好了xdebug。
第三步:在AptanaStudio中使用XDebug
直接点击OK->OK,关闭对话框,配置就完成了。
第四步:调试程序
这里有一个使用Plupload来上传大文件的程序。首先我要开启Aptana(没ide可调试不了哦^_^),打开我的上传文件upload.php(客户端上传成功后,由该php来处理文件,比如文件块合并写入到本地服务器的某个目录等等)。
在客户端上传成功之后,我的AptanaStudio直接就自动跳转到调试界面(初次使用该功能可能会有一个询问是否进入调试的对话框,确认并记住操作,下次就直接进入调试状态)
upload就这些代码:
前端上传完成之后,会有一个蓝色箭头指向我的php代码的第一行,按下工具栏最右边的虫子样子的按钮手动切入调试状态。
到此为止,就可以进行调试了,任何前端发起的对该php脚本的请求,都可以在ide中进入调试环境,由我们来控制php脚本是否继续往下执行,可以看到实时的变量变化,是不是和其他所有的debug环境一样了呢。
注:其他的php开发环境,如zendstudio,eclipse,sublime等,由于这些ide都是基于eclipse修改来的,都可以使用上面的方法配置xdebug调试环境