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 配置前肯定你用的端口没有被占用