Xdebug+PhpStorm遠(yuǎn)程調(diào)試

開發(fā)環(huán)境:

  • Windows筆記本:日常開發(fā)使用機(jī)器庇绽,安裝PHPStrom
  • Linux遠(yuǎn)程服務(wù)器:安裝php-fpm/nginx等所有開發(fā)依賴環(huán)境,IP: 172.16.0.182
  • 【注意】员凝,Windows通過vpn訪問到Linux服務(wù)器晰骑,也就是說Windows->Linux是可以通過IP直接訪問的,而Linux->Windows無法直接連通绊序,因?yàn)閷?duì)Linux而言硕舆,Windows開發(fā)機(jī)的IP只有VPN的網(wǎng)關(guān)地址
  • Windows和Linux之前通過PhpStorm的sftp進(jìn)行代碼同步

目標(biāo)

  • 遠(yuǎn)程調(diào)試(remote debug):也就是在windows本地調(diào)試遠(yuǎn)程服務(wù)器(Linux)上的代碼
  • 日常開發(fā)用Windows中在PhpStorm中設(shè)置斷點(diǎn),可調(diào)試遠(yuǎn)程Linux遠(yuǎn)程服務(wù)器(172.16.0.182)的代碼

過程

  1. Linux遠(yuǎn)程服務(wù)器上骤公,PHP安裝Xdebug插件

    zend_extension = /home/work/php70/lib/php/extensions/no-debug-non-zts-20151012/xdebug.so
    
    xdebug.remote_host=127.0.0.1
    ; //注意這里是抚官,客戶端的ip<即IDE的機(jī)器的ip,不是你的web server>
    
    xdebug.remote_enable=on
    xdebug.remote_port = 9001
    ;//注意這里是,客戶端的端口<即IDE的機(jī)器的ip,不是你的web server>
    ;// 由于VPN緣故阶捆,Linux無法直接訪問Windows凌节,需要先指定為Linux本機(jī)的9001端口,再通過ssh端口映射的功能轉(zhuǎn)發(fā)至Windows機(jī)器
    
    xdebug.remote_log = /tmp/xdebug.log
    

    ?

  2. Windows上配置phpStorm

    2.1 SFTP同步遠(yuǎn)程代碼

sftp.png

2.2 設(shè)置PHP-Servers為遠(yuǎn)程Linux服務(wù)器洒试,調(diào)試模式為Xdebug


xdebug-settings-servers.png

2.3 新建調(diào)試配置:Run-> Edit Debug Configuration

edit-debug-configuration.png
  1. Windows上開啟Xshell端口映射(隧道->TCP/IP轉(zhuǎn)移)

    將Linux的9001端口請(qǐng)求轉(zhuǎn)發(fā)至Windows的9001端口上倍奢,這里通過Xshell的隧道方式實(shí)現(xiàn):類型選擇Remote(Incomming)

    xshell-tunnel.png

在xshell中通過ssh連接Linux遠(yuǎn)程服務(wù)器后,查看->隧道窗格->轉(zhuǎn)移規(guī)則垒棋,可見遠(yuǎn)程9001已和本地的9001建立連接


xshell-tunnel-connecting.png
  1. Windows開啟調(diào)試卒煞,訪問遠(yuǎn)程服務(wù)器代碼的url:http://172.16.0.182:8088/

    • 選擇新建的Xdebug配置項(xiàng)

    • 點(diǎn)擊綠蟲子調(diào)試按鈕(Shift+F9)開啟調(diào)試


      start-debug.png
    • 點(diǎn)擊調(diào)試按鈕后,會(huì)自動(dòng)打開瀏覽器訪問:http://172.16.0.182:8088/?XDEBUG_SESSION_START=17461

      這里XDEBUG_SESSION_START=17461會(huì)在cookie中設(shè)置XDEBUG_SESSION=17461叼架,而phpStorm一直在監(jiān)聽17461的idekey來訪問畔裕,如下圖:

xdebug-waiting.png
 訪問到斷點(diǎn)時(shí)會(huì)進(jìn)入ide的debug模式,Enjoy~
debugging.png

注意事項(xiàng)

  • 此例中只通過任意的idekey和phpStorm的調(diào)試按鈕來協(xié)調(diào)開始調(diào)試模式乖订,而不是一些教程中設(shè)置特定的idekey=PHPSTORM和瀏覽器插件(Xdebug Helper)來啟動(dòng)調(diào)試扮饶,后者在筆者環(huán)境下未成功,望知曉
  • 本案例中特殊之處在于vpn訪問的特殊網(wǎng)絡(luò)結(jié)構(gòu)乍构,單向通信容易甜无,逆向則需要借助端口轉(zhuǎn)發(fā)工具
  • 為避免調(diào)試過程中Nginx返回502超時(shí),需要修改php-fpm和nginx設(shè)置哥遮,如下:
// 修改php-fpm.conf配置
; The timeout for serving a single request after which the worker process will
; be killed. This option should be used when the 'max_execution_time' ini option
; does not stop script execution for some reason. A value of '0' means 'off'.
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
; Default Value: 0
;request_terminate_timeout = 0
request_terminate_timeout = 300 //這里用0或設(shè)置5分鐘

// 修改nginx中fastcgi超時(shí)時(shí)間
fastcgi_read_timeout 7200s;  // 設(shè)置fastcgi_read表示nginx從php-fpm讀取返回?cái)?shù)據(jù)的時(shí)間

參考文檔:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末岂丘,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子昔善,更是在濱河造成了極大的恐慌元潘,老刑警劉巖畔乙,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件君仆,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)返咱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門钥庇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人咖摹,你說我怎么就攤上這事评姨。” “怎么了萤晴?”我有些...
    開封第一講書人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵吐句,是天一觀的道長。 經(jīng)常有香客問我店读,道長嗦枢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任屯断,我火速辦了婚禮文虏,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘殖演。我一直安慰自己氧秘,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開白布趴久。 她就那樣靜靜地躺著丸相,像睡著了一般。 火紅的嫁衣襯著肌膚如雪彼棍。 梳的紋絲不亂的頭發(fā)上已添,一...
    開封第一講書人閱讀 52,682評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音滥酥,去河邊找鬼更舞。 笑死,一個(gè)胖子當(dāng)著我的面吹牛坎吻,可吹牛的內(nèi)容都是我干的缆蝉。 我是一名探鬼主播,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼瘦真,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼刊头!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起诸尽,我...
    開封第一講書人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤原杂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后您机,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體穿肄,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡年局,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了咸产。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片矢否。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖脑溢,靈堂內(nèi)的尸體忽然破棺而出僵朗,到底是詐尸還是另有隱情,我是刑警寧澤屑彻,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布验庙,位于F島的核電站,受9級(jí)特大地震影響社牲,放射性物質(zhì)發(fā)生泄漏壶谒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一膳沽、第九天 我趴在偏房一處隱蔽的房頂上張望汗菜。 院中可真熱鬧,春花似錦挑社、人聲如沸陨界。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽菌瘪。三九已至,卻和暖如春阱当,著一層夾襖步出監(jiān)牢的瞬間俏扩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來泰國打工弊添, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留录淡,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓油坝,卻偏偏與公主長得像嫉戚,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子澈圈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容