运行xdebug须要客户端IDE(phpstorm)、远程服务器配合,首先是客户端配置好端口,发送debug请求,请求会经过浏览器或者IDE的http请求,携带特定的参数发送到服务端,服务端收到请求后,发现这是一个xdebug请求,则与IDE创建dpgp链接,当遇到断点时候,返回调试信息给IDEphp
https://xdebug.org/download.phphtml
zend_extension=xdebug.so xdebug.idekey=PHPSTORM xdebug.remote_connect_back = 1 //若是开启此,将忽略下面的 xdebug.remote_host 的参数 xdebug.remote_host=192.168.x.x //注意这里是,客户端的ip<即IDE的机器的ip,不是你的web server> xdebug.remote_enable=on xdebug.remote_port = 9001 //注意这里是,客户端的端口<即IDE的机器的ip,不是你的web server> xdebug.remote_handler = dbgp xdebug.auto_trace = 1 xdebug.remote_log = /tmp/xdebug.log
debug session 的工具的目的是设置一个cookie, 让每次发送数据的时候都会携带这个 cookie, 从而识别监听.git
6.1) 安装工具
https://chrome.google.com/webstore/detail/xdebug-helper/eadndfjplgieldjbigjakmdgkmoaaaocgithub
6.2) 点击图标设置web
6.3) 已经设置了cookie, Key 是 XDEBUG_SESSION
, 值是 PHPSTORM
chrome
上面的模式有个缺点,插件是针对于一个标签页
快捷键:
Mac: Ctrl+Shift+X Windows:Alt+Shift+Xsegmentfault
咱们这里建立的调试页面的类型是PHP Web Page
, 服务器选择的是刚才已经创建好的服务器浏览器
自动生成:XDEBUG_SESSION_START
http://example.com/?XDEBUG_SESSION_START=13608服务器
if (oSession.host == "xxxx") { var sCookie = oSession.oRequest["Cookie"] + ';XDEBUG_SESSION=PHPSTORM;'; oSession.oRequest.headers.Add("Cookie", sCookie); }
export XDEBUG_CONFIG="idekey=PHPSTORM" php myscript.php
https://derickrethans.nl/debugging-with-multiple-users.html
插件下载地址:http://code.activestate.com/komodo/remotedebugging/微信
第一次运行的时候能够经过 phpstorm 自带的工具来检查配置的兼容性.Run > Web Server Debug Validation
校验代码
:https://gist.github.com/han8g...
左侧
绿色三角形 : Resume Program
,表示將继续执行,直到下一个中断点中止。
红色方形 : Stop
,表示中断当前程序调试。
上方
第一个图形示 : Step Over
,跳过当前函数。
第二个图形示 : Step Into
,进入当前函数內部的程序(至关于观察程序一步一步执行)。
第三个图形示 : Force Step Into
,強制进入当前函数內部的程序。
第四个图形示 : Step Out
,跳出当前函数內部的程式。
第五个图形示 : Run to Cursor
,定位到当前光标。