之前整理在印象筆記中,現(xiàn)在搬出來。分本地調(diào)試和遠(yuǎn)程調(diào)試。本文親測(cè)通過并截圖,有問題歡迎留言探討。 (參考網(wǎng)上多位前輩的博客,整理在筆記里忘記保存原文鏈接,這里無法貼出鏈接,望見諒) # 痛處
一般php項(xiàng)目調(diào)試都用echo, var_dump()之類的函數(shù)調(diào)試,項(xiàng)目大的話很不方便,也很低效;
# 預(yù)備
安裝xdebug擴(kuò)展; 網(wǎng)址https://xdebug.org/download.php windows找相應(yīng)的版本下載即可,linux下在https://xdebug.org/wizard.php這個(gè)頁面把 php -i 輸出結(jié)果放里面會(huì)告訴你怎么弄,相當(dāng)方便; 如下:
1,修改php配置文件,在最后添加. zend_extension = 'E:/wamp/bin/php/php5.5.12/zend_ext/php_xdebug-2.2.5-5.5-vc11-x86_64.dll'; [xdebug] xdebug.auto_trace=On xdebug.collect_params=On xdebug.collect_vars = On ;收集變量 xdebug.collect_return = On ;收集返回值 xdebug.trace_output_dir='e:/wamp/tmp/debuginfo' xdebug.remote_enable = on xdebug.remote_handler = dbgp xdebug.remote_host= localhost ;用于遠(yuǎn)程調(diào)試 服務(wù)器的地址 xdebug.remote_connect_back = 1;用于遠(yuǎn)程調(diào)試 xdebug.remote_port = 9000 xdebug.idekey = PHPSTORM xdebug.profiler_enable = on xdebug.profiler_enable_trigger = off xdebug.profiler_output_name = cachegrind.out.%t.%p xdebug.profiler_output_dir = 'E:/wamp/tmp/debuginfo' xdebug.show_local_vars=0 xdebug.show_exception_trace = On ;開啟異常跟蹤 xdebugbug.max_nesting_level = 10000 phpinfo中驗(yàn)證xdebug擴(kuò)展是否啟用。 服務(wù)端配置完成! 2,phpstrom 配置 
這部配置的端口意思是 IDE 會(huì)在本機(jī)監(jiān)聽9000端口
在項(xiàng)目右上角debug配置中
根據(jù)項(xiàng)目選擇類型如下,網(wǎng)站選擇web application,Name項(xiàng)自定義
server項(xiàng)沒有,點(diǎn)擊后面按鈕配置 
配置starturl(入口地址)

完成配置如下:

點(diǎn)那個(gè)蟲子就開啟了調(diào)試,會(huì)在上一步我們配置的默認(rèn)瀏覽器打開starturl,如下:
在代碼里打一個(gè)斷點(diǎn),刷新一下頁面,調(diào)試窗口會(huì)顯示詳細(xì)信息, 上面有操作按鈕,如下: 
# 優(yōu)化地方
上面調(diào)試步驟很麻煩,我們都是希望想調(diào)試的時(shí)候就調(diào)試,推薦插件 chrome 插件 xdebug helper 方便 隨時(shí)調(diào)試;也是個(gè)臭蟲的圖標(biāo),安裝上配置一下,如下:
在需要調(diào)試的頁面啟用插件 
IDE中點(diǎn)亮電話的圖標(biāo),啟動(dòng)監(jiān)聽,如下:
配置結(jié)束,代碼里想調(diào)試直接打斷點(diǎn),完后瀏覽器訪問頁面,運(yùn)行到斷點(diǎn)IDE就會(huì)監(jiān)聽debug信息,并把信息顯示出來;
#xdebug 遠(yuǎn)程調(diào)試
有點(diǎn)項(xiàng)目在本地開發(fā)很難搭建環(huán)境,我們需要在遠(yuǎn)程開發(fā)和調(diào)試。也就是在本地去調(diào)試遠(yuǎn)程開發(fā)機(jī)上的代碼。
!0,遠(yuǎn)程調(diào)試原理:
左邊是調(diào)試客戶端,比如IDEA、eclipse之類的IDE,右邊是xdebug,運(yùn)行按照如下步驟進(jìn)行: 1, IDE監(jiān)聽一個(gè)調(diào)試端口,默認(rèn)是9000,可以自行配置。 2, 用戶訪問右邊php環(huán)境的server,我們這里使用瀏覽器訪問(隨便在那都行,為方便選擇本地瀏覽器),一般IDE會(huì)自動(dòng)幫我們?cè)谡5膗rl后面增加 XDEBUG_SESSION_START=一個(gè)隨機(jī)數(shù) 的參數(shù)。這個(gè)參數(shù)是用來通知xdebug主動(dòng)連接IDE的9000端口進(jìn)行調(diào)試的,沒有這個(gè)參數(shù),xdebug不會(huì)去主動(dòng)連接IDE, 調(diào)試也就不會(huì)觸發(fā)。 3, xdebug主動(dòng)去連接IDE的9000端口, 連接成功后,調(diào)試開始。 xdebug是如何知道IDE監(jiān)聽9000端口的呢? xdebug有兩個(gè)配置:remote_host和remote_port,分別代表IDE的ip地址和監(jiān)聽端口。由此可見,IDE和xdebug必須協(xié)商好監(jiān)聽端口。 端口好辦,但是如果我的ip會(huì)變化,那我換一個(gè)ip,豈不是要修改下xdebug.remote_host配置嗎?好麻煩!!! 不知道ip沒關(guān)系,xdebug可以自己知道,只要設(shè)置 xdebug.remote_connect_back 為1就可以了,其運(yùn)行原理見下圖,實(shí)現(xiàn)很簡(jiǎn)單,xdebug可以從http請(qǐng)求的頭部獲取ip 地址,之后就用該ip地址作為remote_host來連接。
!1,服務(wù)端環(huán)境安裝xdebug(方法如上)
最關(guān)鍵的兩個(gè)設(shè)置xdebug.remote_host和xdebug.remote_connect_back, xdebug.remote_host 要設(shè)置成你本機(jī)的地址,多個(gè)用逗號(hào)隔開 xdebug.remote_connect_back要設(shè)置成1或者on 設(shè)置完這個(gè)會(huì)自動(dòng)忽略remote_host的設(shè)置,如果本地是自動(dòng)獲取ip或者多人的話開啟這個(gè)比較好 
服務(wù)端的配置已完成!
!2,IDE配置 (調(diào)試遠(yuǎn)端代碼一般會(huì)和遠(yuǎn)端開發(fā)同時(shí)進(jìn)行,遠(yuǎn)端調(diào)試需要打開一個(gè)本地和遠(yuǎn)端的通道,要不接受不到調(diào)試信息) > 新建一個(gè)遠(yuǎn)端的php解釋器
配置正確的話,如下圖: 
> 新建項(xiàng)目 或者 把本地已有的項(xiàng)目和遠(yuǎn)端的項(xiàng)目映射一下 都行
> 在項(xiàng)目中配置 sftp 

再配置mapping
把遠(yuǎn)端代碼下載下來,如下:
來個(gè)截圖,好累啊 
這個(gè)時(shí)候看我們開始配置的那個(gè)遠(yuǎn)端解釋器 之前警告沒了,因?yàn)槲覀兣渲昧薽apping

配置debug,步驟同上,不一樣的地方是配置 path mapping

開始調(diào)試了 打斷點(diǎn) 瀏覽器訪問遠(yuǎn)端的地址 debug窗口已經(jīng)有調(diào)試信息了
忽略我的504 這是別的原因造成的和xdebug沒關(guān)系 因?yàn)槭菧y(cè)試項(xiàng)目懶得管 ~ ~ 開發(fā)遠(yuǎn)端項(xiàng)目我們剛才配置好了sftp,我們本地修改可以通過如下配置自動(dòng)同步到遠(yuǎn)端 我一般選 ctrl + s 那項(xiàng) 按ctrl + s會(huì)自動(dòng)同步到遠(yuǎn)端開發(fā)機(jī)
PHP編程 鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。