XDebug配置极简教程,phpstorm实现http请求断点调试

本文提供了一种简化的XDebug配置教程,适用于PHPStorm的http请求断点调试。内容涵盖IDE中调试脚本、调试http请求的流程、mac和windows环境下的xdebug2与xdebug3配置示例,以及远程调试和问题排查的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写这篇的文章的初衷:网络上配置XDebug的文章有很多,XDebug也有官方的文档, PhpStorm也有官方的文档,为什么还要写那?

相信不少人,都有一种感觉,虽然教程很多,但是按教程走一遍,自己的确不能正常调试。

问题出在下面几个方面:
1. 对调试过程中,没有一定的认识,因此出现问题时,不知道如何排查;
2. 不管是IDE, 还是浏览器, PHP,不管配置对不对,都还照常运行,也没有错误提示,让问题很难排查;

下面以两种形式来讲述XDebug的配置,一种是IDE中直接调试脚本,一种是调试http请求(包含xdebug2, xdebug3, 本地环境,远程环境, windows环境,mac环境)。

IDE中调试脚本

这个比较简单,安装好xdebug扩展之后(先不用配置php.ini),直接在phpstorm中调试脚本时可能会报下面的错误:没有找到Debug扩展。
在这里插入图片描述

在这里插入图片描述
这是因为phpstorm使用的解析器没有找到xdebug扩展,可用下面任意一种方法解决:

  1. 在解析器配置中指定 debug extension路径;
  2. 指定的php.ini 文件中,加上debug extension的路径,mac:zend_extension=xdebug, windows:zend_extension="D:\Programs\WinNMP\bin\PHP\php-8.1.26\ext\php_xdebug.dll" (windows下相对路径可能找不到,因此这里用的绝对路径)

第2中方式,可以使用下面的方法查看具体用的那个配置文件,还有配置是否生效。

# 这个php一定要是phpstorm 解析器用的那个,因为有的设备上可能装了多个php版本
php --ini  
Configuration File (php.ini) Path:
Loaded Configuration File:         D:\Programs\WinNMP\bin\PHP\php-8.1.26\php.ini

php -v
PHP 8.1.26 (cli) (built: Nov 22 2023 10:01:32) (ZTS Visual C++ 2019 x64)
Copyright (c) The PHP Group
Zend Engine v4.1.26, Copyright (c) Zend Technologies
    with Xdebug v3.3.2, Copyright (c) 2002-2024, by Derick Rethans

在这里插入图片描述配置完,就可以再次尝试上面的脚本调试了,可以看到已经可以调试本地脚本了。
在这里插入图片描述

调试http请求

上面的是在phpstorm的环境下调试脚本,与php webserver没有什么关系,这里的就不同了,会多了webserver。

首先了解下 http调试的流程,对排除中间的问题会有好处。

用户使用curl, 浏览器,或者postman等工具时,向服务端发送http请求,如果php配置(xdebug.start_with_request=yes)的将所有请求都调试的话,上面的请求中不需要加上特殊的值,否则的话就需要加上XDEBUG_SESSION的头信息(可以手动加上,也可以通过浏览器插件);webserver 在收到请求后,判断是否需要调试,需要的话就通过phpstorm监听的调试端口,来交互调试过程中的命令。

配置php.ini (这里是webserver的php.ini, 不一定与上面命令行php用的配置文件相同), 可以通过phpinfo()函数查看到用的那个配置文件。

下面分别以mac xdebug2, 和 windows xdebug3,实例下如何配置, 但是可以自由结合。

mac xdebug2 的示例

zend extension=xdebug
xdebug.mode = debug
;xdebug.start_with request=yes   ;启用后,所有的请求都会触发调试,否则需要带有XDEBUG_SESSION的请求才会触发调试
xdebug.client_port = 9003 ; IDE 监听的调试端口
xdebug.client host=192.168.10.1 ; IDE 监听的ip地址, 如果同样的环境,可以使用localhost

windows xdebug3 的示例

zend_extension="D:\Programs\WinNMP\bin\PHP\php-8.1.26\ext\php_xdebug.dll"
xdebug.mode = debug 
xdebug.remote_host=localhost 
xdebug.remote_port=9003

配置完后,重新加载服务端php的配置,就算完成了。(很多博客中说要配置ide.key, dgbp 什么的,但是发现配与不配没区别,因此这里给出了最简单的配置)
好了,查看下phpinfo()的输出数据中是否包含了xdebug. 有的话,就说明服务端的已经配置好了, 没有的话,可以自己排查下。
在这里插入图片描述服务端配好,还需要配置IDE, 只需要配置下面一处就好,注意下面的端口,与上面的端口要一致。
在这里插入图片描述有人说要配置DBGp, 但是感觉用不到,我的都清空,或者随意配没影响。在这里插入图片描述也有人说要配servers, 但是不配也没影响,第一次调试时,会自动交互方式生成的。
在这里插入图片描述好了,IDE配置也完成了,下面开始调试吧。
首先启用IDE的调试监听,老版IDE是个类似电话的图标,新版的是个虫子,点亮成绿色就可以。
另外再代码中加上断点,比如入口文件server.php, 或者index.php等
在这里插入图片描述

发送http请求来触发调试,如果前面没有配置对所有请求都调试,则这里加上请求头信息。

curl 'http://example.com/xxxx' -H 'Cookie: XDEBUG_SESSION=PHPSTORM' #地址换成你的地址就好

这时(如果前面没有配置servers选项的话)phpstorm会自动弹出上面server的配置窗口,根据自己的实际情况配置就好。
在这里插入图片描述配置好servers后,或者配置过,则进入了调试如下的调试窗口,然后就可以单步调试了。在这里插入图片描述

好了,至此已经完成了。下面补充点内容

浏览器xdebug可以自动加上debug session,插件名称xdebug, 配置也比较简单。
选phpstorm 或者other, 值随意均可,服务端是根据是否带有debug_session键来判断的,除非在php.ini中制定了具体的值。
在这里插入图片描述
启用插件后,就可以看到浏览器地址栏中有个虫子的图标,点亮时,浏览器发送请求时,会自动带上调试session的在这里插入图片描述
在这里插入图片描述

如何远程调试

远程调试时,php server环境的配置不变,只需要在phpstorm配置好远程环境的访问方式就行,比如ssh。其他有关debug的配置不变,需要注意的就是ip相关的配置。

问题排查

查看IDE是否监听端口,比如上面的9003, 监听的什么ip(不同环境,或者远程调试时比较重要)

在这里插入图片描述

不确定是否发送调试数据,这是需要借助抓包工具,比如wireshark, 查看网络包哪里出了问题,然后有针对性的排查。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值