php 開發(fā)中需要加入很多l(xiāng)og日志來記錄每次請求和響應(yīng)的結(jié)果兼搏,但是開發(fā)過程中這種打log的方式非常低效而且繁瑣,因本身主要Android和JAVA的開發(fā)摊灭,所以沒有安裝 PhpStorm , 而是利用 Intelij Idea 進(jìn)行配置瘾敢,下面主要講述如何利用 Intelij Idea 進(jìn)行單步調(diào)試。這里會用到 Xdebug 工具贴妻,下面主要講述如何利用 Xdebug 實現(xiàn)在 Intelij Idea 中進(jìn)行調(diào)試。
Xdebug 是什么
Xdebug是一個開放源代碼的PHP程序調(diào)試器(即一個Debug工具)蝙斜,可以用來跟蹤名惩,調(diào)試和分析PHP程序的運行狀況。
官網(wǎng)
如何安裝 Xdebug
下載地址
上面有Windows孕荠、Linux娩鹉、MacOs的安裝說明,這里不再詳細(xì)闡述
如何進(jìn)行配置岛琼?
上述下載或編譯完成之后會得到 .dll 文件(Win)或者 .so 文件(Linux底循、Mac)
下面主要講述 Linux 下的配置,先將編譯生成的 xdebug.so 放到 phplib 目錄下
php.ini 配置
在 php.ini 文件中打開如下配置:
[Xdebug]
zend_extension="/home/work/odp/php/ext/xdebug.so"
;xdebug.auto_trace=On
;xdebug.collect_params=On
;xdebug.collect_return=On
;xdebug.trace_output_dir="/home/work/odp/var/xdebug/"
;xdebug.profiler_enable=On
;xdebug.profiler_output_dir="/home/work/odp/var/xdebug/"
xdebug.idekey=id_xdebug
xdebug.remote_enable = On
xdebug.remote_host=192.168.1.103
xdebug.remote_port=9001
xdebug.remote_handler=dbgp
xdebug.remote_connect_back=0
;xdebug.remote_log=/home/work/odp/log/xdebug.log
xdebug.remote_timeout=3000
xdebug.remote_autostart=1
zend_extension
: 配置 so 的路徑
屏蔽的部分是利用 xdebug 輸出詳細(xì)的函數(shù)調(diào)用路徑以及執(zhí)行時間槐瑞,因本文主要講述單步調(diào)試,不展開
xdebug.idekey
: 這個需要和 IDEA 中配置一致阁苞,下面在講述 IDEA 配置時會說到
xdebug.remote_enable
: 是否支持遠(yuǎn)程調(diào)試困檩,本地調(diào)試也是打開這個
xdebug.remote_host
: idea 所在機器的 ip
xdebug.remote_port
: Xdebug 通信端口,要與 Idea 中配置一致那槽,后續(xù)會說到
xdebug.remote_handler
: 通信協(xié)議悼沿,目前只能配置 dbgp
xdebug.remote_connect_back
: 多個開發(fā)人員的時候會用到這個,如果設(shè)置為 1 會忽略 xdebug.remote_host 配置
xdebug.remote_log
: 剛開始配置時不知道是 idea 的配置問題還是 xdebug 的配置問題骚灸,可以將該 log 打開定位問題
debug 詳細(xì)的配置可以參考官網(wǎng):
注意: 配置完成記得重啟下 php 的服務(wù)喲
完成后可以輸入: php -m
看看是否能看到 Xdebug 模塊
Idea 配置
配置 Server
進(jìn)入首選項糟趾,打開如圖所示配置
新增一個配置項,填入name甚牲、host义郑、port這些項,其中 host 和 port 是服務(wù)器地址以及對外的端口丈钙,如下圖所示
配置 PHP Debug
打開 PHP->Debug 配置項非驮,輸入 Debug 端口號,這個主要用來和服務(wù)器端的xdebug進(jìn)行通信雏赦,端口要和 php.ini 中 xdebug.remote_port 配置的值一致
配置 DBGP Proxy
打開 PHP->Debug->DBGp Proxy 劫笙,填入 IDE Key芙扎、host、port填大,其中 IDE Key 和 php.ini 配置中 xdebug.idekey 配置要保持一致
驗證配置
上述配置保存成功后戒洼,就可以驗證配置是否生效,通過添加 PHP remote debug 來進(jìn)行驗證
將服務(wù)跑起來允华,代碼中加上斷點圈浇,發(fā)送個請求,如果能進(jìn)入斷點例获,說明配置就成功了汉额,大功告成。
注意點
如上所示的地方千萬記得要打開榨汤,要不然debug不會生效蠕搜,所有的努力都白搭,還有就是如果發(fā)現(xiàn)返回 504 Gateway Time out
收壕,可以修改 nginx 配置項 fastcgi_send_timeout
,fastcgi_read_timeout
設(shè)置時間長一點試試妓灌。