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腳本,右鍵菜單,選擇比較本地遠程的文件版本

這裏能顯示文件差異之處。我這裏是首頁文件內容一致,所以在第二行和第四行打斷點都是能夠觸發斷點調試的。

以上就是所有配置,如有遺漏,相關問題,歡迎底下回復。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章