一、 目标
实现phpstorm远程调试,并且支持多人调试同一份代码,这里远程跨网调试,即服务器代码在公网上,与开发人员处于完全不同的两个网络环境;
二、 准备工作
- 1. 网络环境
服务器域名:www.test.com
开发网络:中国电信动态ip
- 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
- 3. 开发人员配置
phpstorm 8
chrome+ xdebug helper
- 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