一、 目標
實現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
