phpstorm + docker + xdebug配置断点调试
断点调试虽然使用的不多,但是到了需要用到的时候去配置却发现记不得具体的配置步骤,非常苦恼。现在docker使用比较普遍,这里记录一下 phpstorm + docker + xdebug 的断点调试配置,开发环境使用dnmp搭建。
前言
断点调试虽然使用的不多,但是到了需要用到的时候去配置却发现记不得具体的配置步骤,非常苦恼。现在docker使用比较普遍,这里记录一下 phpstorm + docker + xdebug 的断点调试配置,开发环境使用dnmp搭建。
一、软件版本
- windows10 + wsl2
- phpstorm: 2023.1.2
- php: 8.2.2
- xdebug: 3.2.2
二、配置步骤
配置xdebug
- 在php.ini文件中加入如下配置
[XDebug]
xdeubg.mode=develop,debug
xdebug.start_with_request=yes
xdebug.client_host=host.docker.internal
xdebug.client_post=9003
-
重启php docker容器(是为了重启php-fpm,不重启配置无法生效)
-
查看php容器日志
2023-10-04 11:21:55 [04-Oct-2023 11:21:55] NOTICE: fpm is running, pid 1
2023-10-04 11:21:55 [04-Oct-2023 11:21:55] NOTICE: ready to handle connections
- 在浏览器中发起请求
http://test.com/index.php
这是本地的虚拟域名,根据实际情况替换。
- 再观察php容器日志,发现
2023-10-04 11:22:00 NOTICE: PHP message: Xdebug: [Step Debug] Time-out connecting to debugging client, waited: 200 ms. Tried: host.docker.internal:9003 (through xdebug.client_host/xdebug.client_port).
2023-10-04 11:22:00 172.18.0.4 - 04/Oct/2023:11:22:00 +0800 “GET /index.php” 200
说明配置生效,服务器断点调试已经开启,接下来配置PhpStorm。
PhpStorm启动调试模式
- 再次在浏览器发起请求
- 点击Accept按钮,右下角显示以下弹窗
- 不用管这个,继续下一步,添加断点
- 再次发起请求,发现连接成功,接下来就可以开发调试了。
实际开发中我们不希望每次请求都进行断点调试,可以修改xdebug配置,去掉
xdebug.start_with_request=yes
这行配置,或者将值修改为no,然后在需要断点调试时,请求中添加一个XDEBUG_SESSION参数,如下
http://test.com/index.php?XDEBUG_SESSION=1
在不需要断点调试时,删除这个参数,这样就可以动态控制断点调试的状态了。XDEBUG_SESSION的值可以为任意值,除了作为GET参数,作为POST参数和COOKIE都可以生效。
更多推荐
所有评论(0)