目前的现象是phpstorm + xdebug能调试连上我笔记本上虚拟机中的web服务, 却连不上在线web主机.
擦擦, 以前也没直接连到在线主机来调试, 一直都是本地调试, 这次情况特殊就歇菜了.
搞了一个通宵, 累死找到原因.
原来xdebug是把本地的phpstorm IDE作为调试过程中的服务端的, web服务运行的主机才是client!!!!
然后我设置web服务上的xdebug一直都是接受全部调试回连请求 xdebug.remote_connect_back = 1
没有指定ip, 这样虚拟机中的web服务倒是能回连上笔记本实机中的phpstorm
可是我那个在线的web服务主机要socket回连到我的phpstorm就得穿过光纤猫->穿过路由器->再到我的phpstormIDE,
由于xdebug检测到的公网ip是分配给光纤猫的, 这样调试回连的socket直接被中间者光纤猫给截断了, 无法到达我笔记本上的phpstorm。
可见, debug过程中, C/S架构,谁是C, 谁是S, 思想概念上颠倒个对象顺序直接就坑死我了, 以前也没看太仔细xdebug的架构介绍, 这次就擦擦了. 如果phpstorm是作为debug过程的C端的话, 是万万不会浪费我一通宵的额
也罢, 找到原因就解决问题, 访问光纤猫配置页, 将其DMZ主机设置为我的笔记本,这样我的笔记本将会受理光纤猫收到的所有端口请求, 这样在线web服务上的xdebug就能回连上我笔记本上的phpstorm了( 当然你也可以设置端口转发方案,将光纤猫的9000端口转发到你笔记本的9000端口 )
唉, 那两天真是郁闷了, 希望以后有其他人遇到类似问题能少走弯路吧. 我先不谢了, 嘎嘎
来源:oschina
链接:https://my.oschina.net/u/2400083/blog/484008