phpstrom 远程调试


一、            目标

         实现phpstorm远程调试,并且支持多人调试同一份代码,这里远程跨网调试,即服务器代码在公网上,与开发人员处于完全不同的两个网络环境;

二、            准备工作

  1. 1.         网络环境

                   服务器域名:www.test.com

                   开发网络:中国电信动态ip

  1. 2.         服务器配置

linux  centos 输入命令

# cat /etc/redhat-release显示如下版本号

                   CentOS release 6.5 (Final)

         # nginx -v

                   nginx version: nginx/1.6.0

         # php-fpm -v

                   PHP 5.4.31 (fpm-fcgi) (built: Jul 24 2014 09:25:56)

                   Copyright (c) 1997-2014 The PHP Group

                   Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies

                       with Xdebug v2.2.5, Copyright (c) 2002-2014, by Derick Rethans

  1. 3.         开发人员配置

         phpstorm 8

         chrome+ xdebug helper

 

  1. 4.         需要端口号

           i.              开发人员网络

         9005 ---> 9005

                   这里是在开发人员网络环境开放一个端口供服务器返回调试信息,由于开发人员是通过路由或者交换机上网,所以必须从公网ip端口映射到本机端口,这里我们的环境是交换机,即我的开发机器是从交换机拉出一条网线联网的,所以到网关上(浏览器里输入网关地址)做一个映射,公网ip的9005端口映射到本机局域网ip的9005端口

         ii.              服务器网络

         22

                   这个一般是默认端口,我们发布代码的通道

         9001 ---> 9001

                            调试注册接口,即开发人员机器到服务器上注册一个唯一Key,让服务器           识别不同的开发人员,这里由于服务器也处于某一局域网,所以也必须设置一                            个端口映射,可以让我们可以从公网ip找到它

三、            开始配置

a)         PhpStorm设置

File-->Settings-->Deployment

 

点击新增

Root path ,即服务器nginx网站根目录

User name 即服务器系统登录账户

 

设置好后点击Test SFTP connection...,成功后如下

 

继续点击上面选项卡Mappings

 

local path 设置本地网站根目录

 

File-->Settings-->Servers

use path mappings. 即上面设置的local path对应服务器上nginx网站根目录

 

 

 

File-->Settings-->Debug

Debug port 即前面准备工作提到的9005端口

 

 

Tools-->DBGp Proxy-->Configuration

这里的idkey用于区分你和其他开发人员身份

9001即前面提到的服务器开放的注册端口

 

phpstorm这里关键配置完毕

b)        chrome设置

google浏览器扩展程序:Xdebug helper,下载安装启用后,地址栏会出现小虫子图标,右击小虫子选项,会出现如下界面:

 

设置好IDE key,要跟前面DBGp Proxy中设置的一样

 

c)         nginx设置

         # vi /etc/php.ini

 

第一行根据自己php版本,我这里不需要设置,在我这里版本php已经配好了xdebug,所以第一行我注释掉了;

xdebug.remote_enable=1开启远程调试

xdebug.remote_port=9005,即前面提到的开放的公网ip端口号9005;

xdebug.remote_connect_back=1,设置1后,即xdebug可以根据你访问的通道建立回访通道,把xdebug信息返回到你的机器,所以xdebug.remote_host设置不设置无所谓,xdebug.idkey也可以不设置

d)        DpgpProxy设置

这是一个xdebug监听软件,软件运行后,开发人员phpstorm可以到这里注册一个idkey,服务器xdebug的调试信息发送到这里,然后返回到对应开发人员的phpstorm,实现远程多人调试;

下载地址:http://code.activestate.com/komodo/remotedebugging/

 

 

不要选php,选python版本的,不要下载错哦,

下载到服务器指定目录后解压,有一个pydbgpproxy的执行文件,找到文件所在目录,然后输入命令:

./pydbgpproxy -i 0.0.0.0:9001 -d 9000

 

0.0.0.0是一个通配符,如果你开发人员环境网络公网ip是固定的,可以设置成具体ip,由于我们动态ip,所以用0.0.0.0,

后面9000是监听xdebug发来的调试信息的,由于我们dbgp proxy软件和服务器在同一台机器上,所以随便给一个接口,只要不冲突就可以了

运行命令后,效果如下:

INFO: dbgp.proxy: starting proxy listeners. appid: 10814
INFO: dbgp.proxy: dbgp listener on 127.0.0.1:9000
INFO: dbgp.proxy: IDE listener on 0.0.0.0:9001

 

然后回到phpstrom 点击tools-->DBGp Proxy-->Register IDE,如果端口号通畅,会提示注册成功:

 

 

服务器也会有提示:

Server:onConnect ('xxx.xxx.xx.xxxx', 25243) [proxyinit -p 9005 -k PhpStorm1 -m 1]

 

 

 

最后打开网址,代码设置断点,浏览器点击小虫子开启debug,就可以调试啦!

 

如上,都是测试配置成功,但由于各软件版本,以及安装不同,极大出现不成功因素,但是只要弄懂原理,都是一样,所以建议看下参考资料:

http://matthardy.net/blog/configuring-phpstorm-xdebug-dbgp-proxy-settings-remote-debugging-multiple-users/?replytocom=320

https://confluence.jetbrains.com/display/PhpStorm/Multi-user+debugging+in+PhpStorm+with+Xdebug+and+DBGp+proxy

http://xdebug.org/docs/remote


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM