phpstorm+xdebug

Step-0、背景

写了几年的PHP,一直都用var_dump()进行调试,但是遇到比较复杂的逻辑,很难进行追踪。这期间也用过phpstorm的xdebug调试功能,但每次再重新使用时还得继续查询资料。这里做一个简单的笔记。好记性不如烂笔头。
参考资料如下博客:
http://www.cnblogs.com/lyzg/p/6222111.html
https://blog.jetbrains.com/webide/2011/02/zero-configuration-debugging-with-xdebug-and-phpstorm-2-0/

基本原理:
xdebug进行断点调试的关键在于:xdebug在识别到一个请求需调试的时候,就会用dbgp的协议向remote_host跟remote_port这个地址发送调试请求,当一个位于remote_host上的IDE如PhpStorm正好在监听remote_port这个端口的调试请求时,就能成功接收到调试信息进行调试。

Step-1:安装phpstorm

细节不详说。

Step-2:服务器端安装PHP服务

细节不详说。

Step-3:服务端安装xdebug

细节不详说。(PS:用的是公司的开发服务器,一般默认都是安装好了xdebug了。)
安装好后,查看PHP的扩展。

Step-4:xdebug配置

在php.ini里面加入如下的xdebug配置,配置如下:

上面每行解释一下:

1、 zend_extension:这个配置为xdebug的安装路径,这个根据自己具体的安装的情况填写。
2、 remote_enable:配置为1。
3、remote_host:配置为127.0.0.1或者localhost。
4、 remote_port,这个默认值为9000,如果这个端口被其它进程占用了就需要换一个。所以我换了一个9999。注意,这里的这个端口要和PHPStorm中的设置保持一致,如下图。
5、idekey设置为PHPSTORM,这个字符串在启动调试的时候要用到,后面再解释这个。

Step-5:验证配置信息

  使用phpinfo看一下输出,查看输出里面是否有xdebug的内容。注意,如果之前有配置过比如zend debugger之类其它的调试工具,需要先从php.ini里面把其它的调试配置去掉,不能同时配置两个调试工具。


  
  
  

Step-6:配置PhpStorm中的php解释器

  依次点击菜单File-Settings,打开如下菜单:

  至此,PhpStorm应用xdebug的调试环境就已经配置好了。接下来看看如何使用断点调试,方法主要有两种(step-7步和step-8步)。
   

Step-7:phpstorm断点调试

1、主动开启PhpStorm对调试端口的监听。

2、找到合适的代码位置打断点。

3、访问对应的请求,并在请求地址后面添加XDEBUG_SESSION_START的参数,如:

XDEBUG_SESSION_START参数的值可以随意写,它的作用在于开启一个http的调试会话。这个会话类似平常的登录会话一样,xdebug会把这个值写到cookie里面去。

只要在http(get或者post)请求中包含XDEBUG_SESSION_START参数或者XDEBUG_SESSION这个cookie中,这个请求就会尝试进入调试环境。只需要在第一次请求调试的时候加上XDEBUG_SESSION_START的参数,接下来一个小时内都不需要再加这个参数。

激活服务端的调试器。(不是必须的)
通过在请求里面带上 XDEBUG_SESSION 参数,并且把参数值设置为之前XDebug里面配置的“idekey”的值,就可以激活服务端的调试。
例如,可以在POST或者GET参数里面加上 XDEBUG_SESSION=PHPSTORM,服务端就会启动调试了。 比如我们要调试 http://www.abc.com/test.php,那么访问链接http://www.abc.com/test.php?XDEBUG_SESSION=PHPSTORM 就可以启动调试了。

具体的原理是这样的:服务端收到请求后,xdebug会检查参数里面的XDEBUG_SESSION值是否等于“idekey”的值,如果相等,那么就说明需要调试,否则就不调试。这个参数也可以设置在Cookie里面。为了调试方便,可以把下面的两端脚本作为链接收藏到书签栏,每次如果要调试就调用第一段脚本在Cookie里面写入XDEBUG_SESSION参数,如果要停止调试,那么就调用第二段脚本移除XDEBUG_SESSION参数的值。

如果想要停止调试,只要把调试端口监听关闭即可:

4、访问后就会进入断点。如上面的第二小步所示。

Step-8:chrome浏览器断点调试

1、组件安装
Chrome组件断点调试不需要在请求后边手动添加XDEBUG_SESSION_START参数,而是借助浏览器的插件来添加。

2、参数设置
点击右上方的组件按钮,右键点击“选项”进行设置。

3、开启调试模式

原文地址:https://www.cnblogs.com/jaspersong/p/8040696.html