php:7.2.21php
xdebug版本:2.7.2html
phpstorm版本:2019.2nginx
nginx版本:1.12.2web
先經過phpinfo()函數查看當前php版本 主要關注的信息以下windows
肯定php的編譯環境,運行系統以及是不是線程安全的 個人環境爲安全
MSVC15 (Visual C++ 2017)x64 非線程安全服務器
查詢要如上信息以後到官網中下載xdebug擴展phpstorm
我是在windows系統上搭建的web服務因此我下載的是windows版的動態連接庫dllide
下載地址爲 https://xdebug.org/download.php函數
xdebug 分不少版本 有2.8的alpha版和2.8的betab版本 這裏我下載的是2.7.2的穩定版 下載哪個根據開始查到的phpinfo信息進行選擇,個人php是VC15 X64 非線程安全的版本那麼就下載下圖所示的這個版本
一、下載後的文件是一個dll文件,將這個文件重命名爲php_xdebug.dll
二、將文件放在php的擴展文件夾裏面 文件夾路徑是php主目錄-》ext文件夾
三、文件夾放置好後就是給php添加這個擴展,
打開php.ini文件 在擴展編輯的地方增長以下代碼
[Xdebug]
zend_extension=E:\LocalServer\php-7.2.21-nts-Win32-VC15-x64\ext\php_xdebug.dll ;加載擴展的位置
xdebug.profiler_output_dir="E:\php-7.2.21-nts-Win32-VC15-x64\xdebug"
xdebug.trace_output_dir="E:\LocalServer\php-7.2.21-nts-Win32-VC15-x64\tmp\xdebug"
xdebug.remote_log="E:\LocalServer\php-7.2.21-nts-Win32-VC15-x64\xdebug\log\xdebug.log" ;日誌記錄位置
xdebug.remote_port=9001 ;xdebug監聽端口
xdebug.collect_params=on
xdebug.collect_return=0
xdebug.remote_enable=1 ;開啓遠程調試
xdebug.auto_trace=on
xdebug.profiler_enable = Off
xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.remote_autostart=Off
xdebug.remote_handler = "dbgp" ;傳輸協議
xdebug.remote_host=127.0.0.1
xdebug.idekey = "PHPSTORM" ;IDE關鍵字
配置好後重啓 php_cgi服務從新加載phppe配置文件
從新輸出phpinfo信息若是看到以下信息既表名xdebug擴展添加成功
添加成功後打開phpstorm 配置idea
注意這裏有一個大坑 若是你的phpstorm版本是比較老的版本可是你的php 和xdebug的版本較新可能會致使調試卡死,是因爲xdebug的xml命名空間變動的緣故,這裏建議安裝最新版本的phpstorm軟件-我安裝的是2019.2 (我之前用的phpstorm之前是10.0.2只能調試php5.x版本的代碼 php版本換成7.x怎麼都不能斷點逐步調試,每次代碼只能段在入口文件的第一行就卡死了最後web服務器返回504)
3.一、Setting配置
File->Setting->Languages & Frameworks
PHP
Debug
DBGp proxy
Servers-這個配置的server是咱們運行調試時選擇的server
3.2運行配置
點擊菜單欄的 RUN->Web Server Debug Validation
進行以下如所示配置
當setting配置好後而且已經正確開啓了nginx 和 php_cgi 服務後點擊Validate 按鈕會顯示調試環境是否配置成功所有顯示√既表示配置成功
要調試就須要發送請求
這裏我發送請求的方式有兩種
4.1 POSTMAN 調試
使用POSTMAN 調試接口的時候須要對請求的接口添加以下header
Cookie:XDEBUG_SESSION=PHPSTORM
4.2使用Chrom調試
使用Chrom調試須要藉助xdebug helper 插件 這個能夠在插件商店下載到,安裝好後進行以下配置
上述配置好後便可對調試的頁面打斷點調試了,在調試前記得開啓監聽點擊這個按鈕
配置下運行的server 並開啓監聽
注:我本機的9000端口被php_cgi佔用了因此xdebug的監聽端口我是用的是9001 配置前肯定你用的端口沒有被佔用