phpstorm怎么調(diào)試php代碼(詳細(xì)步驟)

雖然我是一個(gè)10多年的老碼農(nóng),但是對(duì)于PHP來(lái)說(shuō)主经,我依然是一個(gè)小學(xué)生荣暮,折騰了半天了,終于搞定了如何在phpstorm中進(jìn)行斷點(diǎn)調(diào)試旨怠,不用再各種echo了,過(guò)程還是蠻折騰的蜈块,于是記錄一下鉴腻。

先曬一個(gè)最終效果吧。


完成效果圖

有一些太基礎(chǔ)的我可能就不說(shuō)了百揭,如果還有疑問(wèn)的爽哎,可以關(guān)注我個(gè)人的公眾號(hào)給我留言。


老胡個(gè)人的公眾號(hào)

1器一、理論知識(shí)

我不太想按照網(wǎng)上的教程狡刘,一步步告訴你怎么搞缤言,因?yàn)槊總€(gè)人的情況真的千差萬(wàn)別,真的沒(méi)法一步步就到位,很多人照著教程依然做不下去猜敢,就是因?yàn)椤?strong>知其然不知所以然”

不過(guò)本章純屬個(gè)人理解,未必正確粘我,不喜歡看的可以直接跳第二章聂薪。

轉(zhuǎn)載請(qǐng)注明,原文地址:http://www.reibang.com/p/bf05fb1b1a98

首先是要用到的工具:——先不著急下載方仿,下面會(huì)說(shuō)下載
1固棚、phpstorm
2、php運(yùn)行環(huán)境仙蚜,我這里直接用的寶塔裝的nginx+php此洲,也可以用其他的xampp,lamp等等
3委粉、php代碼調(diào)試工具:今天用的是xdebug呜师,類(lèi)似產(chǎn)品還有zend debugger

大概解釋一下這三個(gè)玩意兒的角色:

  • 前兩個(gè)比較好理解,phpstorm是代碼編輯器贾节,跟java的eclipse匣掸、python的pycharm類(lèi)似,他們就是一個(gè)很牛逼的記事本而已氮双,通常并不能直接運(yùn)行代碼碰酝,而是需要搭配運(yùn)行環(huán)境才可以運(yùn)行代碼。
    例如:java的eclipse需要jdk戴差,python的pycharm需要python sdk送爸,phpstorm需要的就是“nginx/apache+php”
  • 比較惡心的就是代碼調(diào)試工具了,在其他語(yǔ)言中,通常都不需要這個(gè)玩意兒就能調(diào)試袭厂,但是php需要墨吓,而且不論是xdebug還是zend debugger,都是需要下載2個(gè)東西纹磺,一個(gè)跟瀏覽器搭配帖烘,一個(gè)跟php搭配

我個(gè)人的理解是這樣的:
1、不用調(diào)試工具的時(shí)候橄杨,如下圖秘症,我們用phpstorm編寫(xiě)好代碼(期間各種echo調(diào)試),發(fā)布到服務(wù)器式矫,然后瀏覽器請(qǐng)求服務(wù)器乡摹,服務(wù)器直接就返回了,很easy采转,但是運(yùn)行過(guò)程中實(shí)際上已經(jīng)跟phpstorm無(wú)關(guān)了聪廉,所以自然也就無(wú)法斷點(diǎn)。

image.png

2故慈、有了調(diào)試工具之后的情況如下圖所示板熊,橙色是我們新增或者修改了的東西。
1)安裝了一個(gè)xdebug的瀏覽器插件
2)運(yùn)行環(huán)境中安裝了一個(gè)xdebug的插件
3)phpstorm中配置了一些東西察绷,來(lái)跟xdebug進(jìn)行搭配
整個(gè)流程串起來(lái)就是:
1)瀏覽器發(fā)出請(qǐng)求邻邮,被xdebug瀏覽器插件攔截,修改報(bào)文請(qǐng)求后繼續(xù)請(qǐng)求服務(wù)器
2)服務(wù)器收到請(qǐng)求克婶,發(fā)現(xiàn)xdebug插件筒严,于是轉(zhuǎn)給xdebug處理
3)xdebug收到請(qǐng)求,跟phpstorm溝通一下情萤,將代碼運(yùn)行停在斷點(diǎn)處鸭蛙,phpstorm收到之后在ide中做斷點(diǎn)處理
4)程序員在ide中調(diào)試斷點(diǎn),phpstorm實(shí)時(shí)將調(diào)試情況同步給xdebug筋岛,xdebug根據(jù)程序員的要求逐步執(zhí)行代碼——所以xdebug和phpstorm之間娶视,是會(huì)有很多次的交互,來(lái)保持調(diào)試的同步


image.png

整個(gè)流程說(shuō)下來(lái)睁宰,可以看到肪获,后端的xdebug和phpstorm的互通是實(shí)現(xiàn)斷點(diǎn)調(diào)試的關(guān)鍵,前端的xdebug實(shí)際上并沒(méi)有什么卵用柒傻,我們來(lái)看xdebug瀏覽器插件的界面孝赫,如下圖,他實(shí)際上是一個(gè)配置界面红符,可以指定是否調(diào)試青柄,以哪種方式調(diào)試伐债。從設(shè)計(jì)的角度來(lái)說(shuō),這個(gè)完全可以通過(guò)phpstorm去配置致开。


image.png

2峰锁、實(shí)戰(zhàn)

理論說(shuō)完了,我們要做工作也就出來(lái)了

1)工具安裝:

1)瀏覽器肯定得有了双戳,我這里使用chrome
這里下載:https://www.google.com/chrome/
2)xdebug的瀏覽器插件虹蒋,這里使用配合chrome的插件——xdebug也提供了其他瀏覽器的對(duì)應(yīng)插件
這里下載:https://chrome.google.com/webstore/detail/xdebug-helper/eadndfjplgieldjbigjakmdgkmoaaaoc
3)xdebug后臺(tái)插件(下載解壓即可,不需要安裝)
這里下載:https://xdebug.org/download.php
4)phpstorm安裝
這里下載:https://www.jetbrains.com/phpstorm/
5)nginx+php飒货,我這里是用的寶塔(因?yàn)閼校?br> 這里下載:https://www.bt.cn/

2)配置(真正惡心的是配置)

1)瀏覽器端的配置:瀏覽器和xdebug瀏覽器插件安裝后魄衅,選擇綠色的小蟲(chóng)子即可開(kāi)啟調(diào)試


image.png

2)php運(yùn)行環(huán)境的配置:也就是nginx+php+xdebug
寶塔裝好之后,一鍵安裝nginx和php膏斤,然后找到php的設(shè)置徐绑,如下圖所示邪驮,一鍵安裝并配置xdebug


image.png

實(shí)際的操作是莫辨,他會(huì)自動(dòng)下載安裝xdebug,跟自行下載解壓的沒(méi)區(qū)別毅访,然后在php.ini里面配置沮榜,最后一行的dll,就是我們前面解壓的xdebug的dll路徑:

[XDebug]
xdebug.profiler_append = 0
xdebug.profiler_enable = 1
xdebug.profiler_enable_trigger = 0
xdebug.profiler_output_dir ="D:\BtSoft\WebSoft\temp\xdebug"
xdebug.trace_output_dir ="D:\BtSoft\WebSoft\temp\xdebug"
xdebug.profiler_output_name = "cache.out.%t-%s"
xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "127.0.0.1"
zend_extension=php_xdebug.dll

然后在寶塔中新建一個(gè)網(wǎng)站喻粹,目錄指向你的項(xiàng)目根目錄蟆融。如果是其他容器,修改nginx或apache配置即可守呜。


image.png

配置完成后check一下你的php環(huán)境是可以跑的型酥。
3)然后是配置phpstorm與php環(huán)境、xdebug互通查乒,第一章我們說(shuō)了弥喉,這塊兒是實(shí)現(xiàn)代碼調(diào)試的關(guān)鍵

  • 首先要讓phpstorm關(guān)聯(lián)php的sdk
    如下圖所示,打開(kāi)phpstorm的設(shè)置玛迄,語(yǔ)言與框架由境,然后php,右邊選擇php的版本蓖议,我這里用的是7.1
    image.png

在彈出的對(duì)話(huà)框中虏杰,按照php的安裝路徑選擇php.exe,選擇后勒虾,會(huì)自動(dòng)顯示php的版本和對(duì)應(yīng)的debugger纺阔,可以看到我這里的php版本是7.1.15,對(duì)應(yīng)的debugger是xdebug2.5.5修然,這里之所以我選擇了php州弟,就可以自動(dòng)識(shí)別出xdebug钧栖,就是因?yàn)樵谏弦徊降呐渲弥校覀円呀?jīng)在php.ini中配置了xdebug的dll路徑婆翔,如果這里你的無(wú)法識(shí)別拯杠,就去上一步找找原因,知道可以識(shí)別為止啃奴。


image.png
  • 配置調(diào)試
    配置完php之后潭陪,繼續(xù)打開(kāi)debug這個(gè)選項(xiàng),右側(cè)可以看到四個(gè)步驟最蕾,我翻譯一下:
    1.安裝xdebug或者zend debugger依溯,驗(yàn)證debugger配置
    2.安裝瀏覽器工具
    3.打開(kāi)php調(diào)試連接(還記得理論部分我們說(shuō)過(guò),xdebug需要多次跟phpstorm交互嗎瘟则,就是通過(guò)這個(gè)listener)
    4.開(kāi)始debug
    image.png

第一步的安裝我們已經(jīng)完成了黎炉,現(xiàn)在點(diǎn)validate來(lái)驗(yàn)證一下,如下圖所示醋拧,第一行選擇local的server慷嗜,第二行填寫(xiě)php項(xiàng)目路徑,第三行填寫(xiě)訪(fǎng)問(wèn)地址(如果有端口記得加上)丹壕,然后點(diǎn)擊validate庆械,正常會(huì)入下面紅框所示,一堆綠色的對(duì)勾菌赖,把server信息缭乘、php.ini信息、xdebug信息等顯示出來(lái)琉用。


image.png

如果你的顯示是各種異常堕绩,就針對(duì)性的去解決,比如下面這個(gè)404邑时,就說(shuō)明url是無(wú)法訪(fǎng)問(wèn)的奴紧,可以復(fù)制到瀏覽器里面看一下,是不是地址填的不對(duì)刁愿,缺了端口绰寞,或者服務(wù)器沒(méi)啟動(dòng);
還有可能是提示php可以了铣口,但是xdebug不行滤钱,那還是回到剛才說(shuō)的xdebug的配置。

image.png

第二步是說(shuō)安裝瀏覽器插件脑题,我們上面已經(jīng)裝好了
第三步打開(kāi)connection件缸,點(diǎn)擊一下打開(kāi)就行了。
第四步開(kāi)始debug叔遂,那么我們就開(kāi)始吧他炊。
我們新建一個(gè)test.php文件争剿,隨便寫(xiě)點(diǎn)內(nèi)容

<?php

echo "test";
echo phpinfo();

但是發(fā)現(xiàn)右上角的運(yùn)行是灰色的,這是因?yàn)槲覀円陆ㄒ粋€(gè)server


image.png

還是在配置中痊末,如下圖所示新建一個(gè)server


image.png

然后新建一個(gè)運(yùn)行配置蚕苇,選擇php web page,右側(cè)的配置中凿叠,server選擇剛才新建的server涩笤,啟用頁(yè)面選擇/test.php,瀏覽器選擇chrome


image.png

image.png

然后就可以啟動(dòng)了盒件,加一個(gè)斷點(diǎn)蹬碧,點(diǎn)擊debug按鈕進(jìn)行調(diào)試


image.png

這時(shí)就會(huì)自動(dòng)打開(kāi)頁(yè)面,并定位到斷點(diǎn)處炒刁。


image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末恩沽,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子翔始,更是在濱河造成了極大的恐慌罗心,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绽昏,死亡現(xiàn)場(chǎng)離奇詭異协屡,居然都是意外死亡俏脊,警方通過(guò)查閱死者的電腦和手機(jī)全谤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)爷贫,“玉大人认然,你說(shuō)我怎么就攤上這事÷眩” “怎么了卷员?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)腾务。 經(jīng)常有香客問(wèn)我毕骡,道長(zhǎng),這世上最難降的妖魔是什么岩瘦? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任未巫,我火速辦了婚禮,結(jié)果婚禮上启昧,老公的妹妹穿的比我還像新娘叙凡。我一直安慰自己,他們只是感情好密末,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布握爷。 她就那樣靜靜地躺著跛璧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪新啼。 梳的紋絲不亂的頭發(fā)上追城,一...
    開(kāi)封第一講書(shū)人閱讀 51,292評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音燥撞,去河邊找鬼漓柑。 笑死,一個(gè)胖子當(dāng)著我的面吹牛叨吮,可吹牛的內(nèi)容都是我干的辆布。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼茶鉴,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼锋玲!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起涵叮,我...
    開(kāi)封第一講書(shū)人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤惭蹂,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后割粮,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體盾碗,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年舀瓢,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了廷雅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡京髓,死狀恐怖航缀,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情堰怨,我是刑警寧澤芥玉,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站备图,受9級(jí)特大地震影響灿巧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜揽涮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一抠藕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧绞吁,春花似錦幢痘、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)购岗。三九已至,卻和暖如春门粪,著一層夾襖步出監(jiān)牢的瞬間喊积,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工玄妈, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留乾吻,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓拟蜻,卻偏偏與公主長(zhǎng)得像绎签,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子酝锅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

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