PhpStrom使用Xdebug技巧圖文教程
一、PHP7安裝Xdebug擴(kuò)展
1、下載xdebug
#wget https://xdebug.org/files/xdebug-2.7.2.tgz
(使用windows可以去官網(wǎng)下載:https://xdebug.org/download)
2、解壓xdebug
#tar xvf xdebug-2.7.2.tgz
3、準(zhǔn)備PHP擴(kuò)展庫(kù)的編譯環(huán)境
#cd xdebug-2.7.2 //準(zhǔn)備PHP擴(kuò)展庫(kù)的編譯環(huán)境 #phpize
如果提示不存在此命令,可以到php目錄中找到該命令的絕對(duì)路徑,然后執(zhí)行。
關(guān)于phpize:https://www.php.net/manual/zh/install.pecl.phpize.php
4、編譯安裝
//配置 #./configure --enable-xdebug --with-php-config=/usr/local/php/bin/php-config //編譯安裝 #make&&make install
5、配置php.ini
zend_extension=xdebug.so #增加xdebug擴(kuò)展 xdebug.remote_enable = 1 #是否開(kāi)啟遠(yuǎn)程 xdebug.remote_autostart=On #開(kāi)啟遠(yuǎn)程調(diào)試自動(dòng)啟動(dòng) xdebug.remote_host=192.168.109.103 #這是你的客戶(hù)端ip xdebug.remote_port = 9001#遠(yuǎn)程端口(可以自己隨意配置) xdebug.collect_params=On #收集參數(shù) xdebug.collect_return=On #收集返回值 xdebug.profiler_enable=On #啟用性能檢測(cè)分析 xdebug.trace_output_dir="/tmp/xdebug_profiler" #指定堆棧跟蹤文件的存放目錄 xdebug.profiler_output_name = cachegrind.out.%t.%p #跟蹤轉(zhuǎn)儲(chǔ)到的文件的名稱(chēng) xdebug.profiler_output_name="cachegrind.out.%p" #確定用于將跟蹤轉(zhuǎn)儲(chǔ)到的文件的名稱(chēng)
更多的配置,參考:https://xdebug.org/docs/all_settings
6、查看xdebug擴(kuò)展是否安裝成功
#php -m
看到xdebug,說(shuō)明安裝成功
二、PhpStrom配置Xdebug
1、打開(kāi)PhpStrom》Preferences》PHP》Debug

2、打開(kāi)PhpStrom》Preferences》PHP》Server

3、右上角

4、開(kāi)啟Xdebug

5、設(shè)置斷點(diǎn)、發(fā)送請(qǐng)求

6、相信有很多小伙伴發(fā)現(xiàn),自己的PhpStrom并沒(méi)有監(jiān)聽(tīng)到自己發(fā)送的請(qǐng)求。出發(fā)PhpStrom的debug有兩種方式:
- (1)GET、POST請(qǐng)求中需要存在XDEBUG_SESSION_START參數(shù)或者cookie里存在XDEBUG_SESSION,這個(gè)值隨意(細(xì)心的小伙伴應(yīng)該會(huì)看見(jiàn)我在配置請(qǐng)求類(lèi)別的時(shí)候,約定了一個(gè)IDE key)。
GET、POST會(huì)生成cookie XDEBUG_SESSION,有效期為1個(gè)小時(shí)(可修改php.ini配置)。
網(wǎng)頁(yè)上的web請(qǐng)求,大家可以下載Xdebug相關(guān)的瀏覽器插件,比如Xdebug helper,它里邊附加的有IDE key配置,只需與我們?cè)赑hpStrom中配置的一致即可。
- (2)我們還可以在php.ini中添加如下一行配置:
xdebug.remote_autostart = 1
此時(shí)便無(wú)需設(shè)置GET、POST、cookie
7、剛剛我舉例的是,請(qǐng)求一個(gè)接口,請(qǐng)求時(shí)添加了cookie,XDEBUG_SESSION=PHPSTROM。如果我用第一種方式,并且是網(wǎng)頁(yè)請(qǐng)求,非得添加這個(gè)配置嗎?當(dāng)然不是,看下邊:

在你要請(qǐng)求的頁(yè)面打上斷點(diǎn),然后在瀏覽器中輸入請(qǐng)求url(記得開(kāi)啟PhpStrom的debug)

再看你的PhpStrom,它已經(jīng)顯示出Xdebug收集的信息了

到這里,PhpStrom配置Xdebug就完成了,相信大家看到了在PhpStrom中展示的信息旁邊有很多小按鈕,沒(méi)錯(cuò),那就是一些調(diào)試工具,下邊就來(lái)逐個(gè)介紹一下。
三、PhpStrom中的Xdebug工具
說(shuō)明:以下摘自PHPstorm官網(wǎng)的debug幫助手冊(cè):
由于以下Xdebug相關(guān)功能按鈕貼圖展示每個(gè)功能不易明白。以下序號(hào)對(duì)應(yīng)紅框中順序按鈕的功能,小伙伴們可以按照下邊實(shí)際操作一遍。
先從左邊紅框中的功能按鈕開(kāi)始逐個(gè)介紹:

- (1)重新執(zhí)行:點(diǎn)此按鈕會(huì)停止當(dāng)前的請(qǐng)求并在此運(yùn)行
- (2)調(diào)試:當(dāng)前應(yīng)用程序停止時(shí),單擊此按鈕再次調(diào)試它。
- (3)暫停程序:?jiǎn)螕舸税粹o可暫停程序執(zhí)行
- (4)停止:?jiǎn)螕舸税粹o可通過(guò)標(biāo)準(zhǔn)shutdown 腳本在外部終止當(dāng)前進(jìn)程
- (5)查看斷點(diǎn):?jiǎn)螕舸税粹o可打開(kāi)“ 斷點(diǎn)”對(duì)話框,你可以在其中配置斷點(diǎn)行為
前五個(gè)是最常用的,后邊四個(gè)不常用,這里不再詳細(xì)說(shuō)明。
然后再?gòu)淖蟮接医榻B一下上邊紅框中按鈕的作用:
- (1)顯示執(zhí)行點(diǎn):?jiǎn)螕舸税粹o可突出顯示編輯器中的當(dāng)前執(zhí)行點(diǎn)
- (2)跳過(guò):?jiǎn)螕舸税粹o執(zhí)行程序,直到當(dāng)前方法或文件中的下一行,跳過(guò)當(dāng)前執(zhí)行點(diǎn)(如果有)引用的方法。如果當(dāng)前行是方法中的最后一行,則執(zhí)行步驟到此方法之后執(zhí)行的行。
- (3)進(jìn)入:?jiǎn)螕舸税粹o可使調(diào)試器步入當(dāng)前執(zhí)行點(diǎn)調(diào)用的方法
- (4)強(qiáng)制進(jìn)入:?jiǎn)螕舸税粹o可使調(diào)試器步進(jìn)到當(dāng)前執(zhí)行點(diǎn)中調(diào)用的方法中,即使要跳過(guò)此方法也是如此
- (5)跳出:?jiǎn)螕舸税粹o可以將調(diào)試器步驟從當(dāng)前方法中移出,直到它之后執(zhí)行的行
- (6)運(yùn)行到光標(biāo):這個(gè)實(shí)際操作的時(shí)候,你會(huì)發(fā)現(xiàn),當(dāng)你打了多個(gè)斷點(diǎn)時(shí),點(diǎn)擊此按鈕,它會(huì)跳到下一個(gè)斷點(diǎn)處
- (7)評(píng)估表達(dá):?jiǎn)螕魰?huì)出現(xiàn)評(píng)估表達(dá)式對(duì)話框
四、一個(gè)請(qǐng)求的Xdebug過(guò)程
1、向php發(fā)送一個(gè)請(qǐng)求
2、php執(zhí)行過(guò)程中遇到斷點(diǎn),Xdebug收集請(qǐng)求信息(這個(gè)我們?cè)趐hp.ini中會(huì)配置收集哪些信息,比如請(qǐng)求參數(shù)、返回值等)
3、Xdebug將收集到的信息發(fā)送到它配置的遠(yuǎn)程IP(包括端口,這些我們?cè)趐hp.ini中都有配置)
4、我們?cè)谂渲肞hpStrom的Xdebug時(shí),配置了它監(jiān)聽(tīng)Xdebug中配置的端口,所以PhpStrom會(huì)收到Xdebug收集到的信息
5、PhpStrom展示出接收到的Xdebug信息
以上就是PhpStrom使用Xdebug技巧圖文教程的詳細(xì)內(nèi)容,更多關(guān)于PhpStrom使用Xdebug的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
php批量轉(zhuǎn)換文件夾下所有文件編碼的函數(shù)類(lèi)
分享一個(gè)php轉(zhuǎn)換文件夾下所有文件編碼函數(shù)類(lèi),適合發(fā)布網(wǎng)站的其他編碼版本,比如你有一個(gè)GBK版本 你想有一個(gè)UTF8版本 或者你只有GBK的源碼 你想二次開(kāi)發(fā) 但是你不想改變IDE的編碼方式 你可以用這個(gè)程序?qū)⑵渑哭D(zhuǎn)化為UTF82017-08-08
PHP如何限制定時(shí)任務(wù)的進(jìn)程數(shù)量
這篇文章主要給大家介紹了關(guān)于PHP如何限制定時(shí)任務(wù)進(jìn)程數(shù)量的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
PHP判斷一個(gè)數(shù)組是另一個(gè)數(shù)組子集的方法詳解
這篇文章主要介紹了PHP判斷一個(gè)數(shù)組是另一個(gè)數(shù)組子集的方法,結(jié)合實(shí)例形式分析了php循環(huán)遍歷、array_diff及array_intersect函數(shù)等方法實(shí)現(xiàn)數(shù)組子集判斷的相關(guān)操作技巧,需要的朋友可以參考下2017-07-07
php根據(jù)用戶(hù)名和手機(jī)號(hào)查詢(xún)是否存在手機(jī)號(hào)碼
本文主要分享了php根據(jù)用戶(hù)名和手機(jī)號(hào)查詢(xún)是否存在手機(jī)號(hào)碼的代碼,具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-02-02
PHP學(xué)習(xí)的技巧和學(xué)習(xí)的要素總結(jié)
在本篇文章里小編給大家整理的是一篇關(guān)于PHP學(xué)習(xí)的技巧和學(xué)習(xí)的要素總結(jié)內(nèi)容,需要的朋友們可以參考下。2020-01-01

