phpstorm+xdebug远程调试

首先我本地开发环境是win10系统,然后要远程调试的服务器是centos7,win10是内网环境,服务器是在公网环境。

网上搜到的部分教程,php.ini配置xdebug,配置开发机内网地址,那只适用于开发机和服务器是同一个网段的网络环境。

但是不在同一个网段的话,比如开发机内网,一台服务器外网,这需要通过DBGP代理实现流量转发,ssh隧道端口映射,这样服务器才能主动跟开发机通讯,参考方法

还有另外一种方法是通过路由器做端口转发,以我的AC68U为例:

192.168.50.73是开发机的内网地址,配置DBGP代理端口9003,流量转发到开发机。即可实现远程调试。

一般是从路由器wan口配置中能找到。

xdebug通过dbgp的连接方式:

这里可以注意到DBGP端口是双向的,也就是说开发机和服务器,都是需要这个端口主动跟对方通讯。这就是需要端口映射的原因。这个官方文档的图中还把xdebug.remote_connect_back配置为1,我试过这样配置,IDE只能注册到DBGP代理,但是没办法断点调试,原因未知。我的xdebug扩展配置如下

[xdebug]  

;xdebug的扩展路径
zend_extension=/www/server/php/56/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so

;启用远程调试

xdebug.remote_enable = 1

;默认已经打开dbgp配置,无需配置

;dbgp代理地址

xdebug.remote_host=127.0.0.1

;dbgp代理端口

xdebug.remote_port = 9000

以下再简单讲一下配置流程

1.下载xdebug扩展,编译安装,并配置到php.ini,成功安装可以,通过phpinfo()看到相关配置。参考链接

2.服务器搭建DBGP代理环境,这里使用pydbgpproxy,启用代理的时候,提示找不到依赖模块,请按照原博客说明修改源代码。参考链接

3.IDE配置,我是用phpstorm开发,以这个为例。按图配置

 

注册完之后,客户端发送请求的时候,得在url或者请求体中携带XDEBUG_SESSION_START这一个参数,或者从cookie中携带XDEBUG_SESSION参数,参数值就是IDE_KEY,比如IDE_KEY是PHPSTORM,服务器地址是www.server.com,web端口是80,可以这样访问

http://www.server.com?XDEBUG_SESSION_START=PHPSTORM,如果是chrome浏览器可以使用https://chrome.google.com/webstore/detail/eadndfjplgieldjbigjakmdgkmoaaaoc这一个调试插件,

爬虫图标选择Debug,访问web即可。远程调试正常的情况下,又没有触发任何断点,会有这样的警告信息

这里推断的原因,是可能没有匹配到php的映射文件,又或者是本地项目文件没有跟远程文件同步好。这里可以通过配置SFTP进行文件差异比较,从本地文件同步到服务器或者是从服务器同步到本地。按下图配置

配置完之后,可以打开相应的php脚本,右键菜单,选择比较本地远程的文件版本

这里能显示文件差异之处。我这里是首页文件内容一致,所以在第二行和第四行打断点都是能够触发断点调试的。

以上就是所有配置,如有遗漏,相关问题,欢迎底下回复。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无限超频

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值