1. 下载安装 Xdebug
1.1. pecl 方式
命令安装:
pecl install xdebug
如果想知道安装的版本可以通过下面1.2
的方式看看自己可以安装什么版本
然后使用 pecl 安装:
pecl install xdebug-3.2.2
如果 php 过老,提示没有支持下载的 Xdebug,可手动去官网历史版本中取挑选下载
历史版本下载地址:https://xdebug.org/download/historical
1.2. 官网下载
下载地址:https://xdebug.org/download
可以先从这里 https://xdebug.org/wizard 查看自己的 php 支持的 Xdebug 版本
在输入框内把本机 phpinfo() 的内容贴上去
点击Analyse my phpinfo() output
按钮会得到对应的版本下载地址和安装方式
简单点也通过下面的方式来查看 Xdebug 支持的 php 版本
版本对照关系来源:https://xdebug.org/docs/compat#versions
安装完且配置好之后执行php -m | grep xdebug
可以看到有Xdeug
2. 配置 xdebug
2.1. php.ini 配置
我的是Xdebug
版本3.x
的配置,下面的都是基于3.x
的配置
[Xdebug]
# 安装完 xdebug 会自动在 php.ini 里补上,如果没有则需要自己添加
zend_extension="xdebug.so"
# idekey:自定义,这里配置什么,phpstorm 里也要配置一样的
xdebug.idekey="PHPSTORM"
# 设置监听模式
xdebug.mode=debug
# 设置端口
xdebug.client_port=9010
# IDE 客户端所在的ip或主机
xdebug.client_host="localhost"
# 调试器开始记录的时间点,yes 表示运行任何 php 代码之前就开始
xdebug.start_with_request=yes
配置文件很重要,且很容易配错,如果 Xdebug 没有效果的话,
要试着了解和配置各个参数(可以看下面5.2
和5.3
小结)
2.2. phpstorm 配置
2.2.1. Xdebug 配置
设置调试端口
- 值为配置文件中
xdebug.client_port
的值
设置DBGp代理
- IDE 键:配置文件中
xdebug.idekey
的值 - 端口:配置文件中
xdebug.client_port
的值 - 主机:IDE 所在的 ip 或主机(同在一个主机可以设置 localhost)
图中"主机"配置和xdebug.client_host
的值在特殊情况是不一样的(比如 docker 环境)
docker 环境下 php.ini 的 xdebug.client_host
是 IDE 所在的主机 ip,也就是本机 ip
2.2.2 服务配置
上述第 4 步后配置服务器
名字随便起,调试器选择 Xdebug,主机和端口是本机项目的域名和端口,后续要用该域名来跑debug
此处的主机和配置文件的xdebug.client_host
无关
配置完服务器确定,回到刚才的 PHP网页创建页
名字也是随便起,服务器选择刚才创建的服务,起始 URL 用 /
3. 测试
测试的方式很简单,在域名所在项目的根路径 index.php 文件中打个断点,直接访问首页就可以看到效果了,
项目里的所有位置都可以打断点,只要访问时项目能走到的地方,包含 web 和脚本都能跑 debug
4. docker 下 Xdebug 配置
docker 环境下的配置有点区别,记录一下 docker 下的配置差异
- 差异一:
xdebug.client_host
参数差异
该参数需要配置本机的ip地址
- 差异二:需要做目录映射
在服务器的配置中设置目录映射
左侧是 IDE 本机的项目路径,右侧是映射 docker 里面的项目路径
不做目录映断点射调试也可以打开,只不过无法逐行断点,可以先把调试调通,之后在做目录映射
5. 后记
5.1. 简单识别配置是否正确,不要盲目粘贴
网上的配置攻略参差不齐,可以从几个参数看配置符合正确
带remote_host
,remote_port
都是 2.x 的配置
带client_host
,client_port
都是 3.x 的配置
5.2. Xdebug3 对比 Xdebug2 删除或替换的配置
本小结内容来源:https://blog.csdn.net/billycoder/article/details/122905908
- xdebug.auto_trace #
使用xdebug.mode =trace和xdebug.start_with_request = yes。
- xdebug.collect_includes #
已被删除。include()和 的文件名require()现在始终包含在开发助手和 函数跟踪输出中。
- xdebug.collect_params #
已被删除。现在,在Development Helpers和 Function Trace输出中始终可以看到带有变量内容和参数名称的参数。
- xdebug.collect_vars #
已移除,仅与 xdebug_get_declared_vars()功能结合使用,也已移除。
- xdebug.coverage_enable #
使用xdebug.mode = coverage。
- xdebug.default_enable #
使用xdebug.mode = develop。
- xdebug.extended_info #
没有替代品。Xdebug 会在需要时自动开启这个 PHP 引擎设置。
- xdebug.gc_stats_enable #
使用xdebug.mode = gcstats。
- xdebug.gc_stats_output_dir #
使用通用xdebug.output_dir设置。
- xdebug.overload_var_dump #
已被删除。PHPvar_dump()现在总是通过xdebug_var_dump()当xdebug.mode设置为 develop. xdebug_var_dump ()函数可用与配置的模式无关。
- xdebug.profiler_enable #
使用xdebug.mode = profile。
- xdebug.profiler_enable_trigger #
使用xdebug.mode =profile和xdebug.start_with_request = trigger。
- xdebug.profiler_enable_trigger_value #
使用通用xdebug.trigger_value设置。
- xdebug.profiler_output_dir #
使用通用xdebug.output_dir设置。
- xdebug.remote_addr_header #
替换为xdebug.client_discovery_header。
- xdebug.remote_autostart #
使用xdebug.mode =debug和xdebug.start_with_request = yes。
- xdebug.remote_connect_back #
替换为xdebug.discover_client_host。
- xdebug.remote_enable #
使用xdebug.mode = debug。
- xdebug.remote_handler #
没有替代品。Xdebug 的步进调试器仅支持DBGp 处理程序。
- xdebug.remote_host #
替换为xdebug.client_host。
- xdebug.remote_log #
由xdebug.log 取代,其中还包括除Step Debugging之外的日志消息。
- xdebug.remote_log_level #
替换为xdebug.log_level。
- xdebug.remote_mode #
对于req值(原始默认值),使用 xdebug.mode =debug和 xdebug.start_with_request = trigger。如果需要原始 xdebug.remote_autostart行为,请使用 xdebug.start_with_request =yes而不是trigger.
对于该jit值,请使用xdebug.mode =debug和 xdebug.start_upon_error = yes。
- xdebug.remote_port #
替换为xdebug.client_port。
默认值也从 更改9000为9003。
- xdebug.remote_timeout #
替换为xdebug.connect_timeout_ms。
- xdebug.show_mem_delta #
已被删除。可以通过比较当前帧和前一帧的使用量来计算内存使用量的差异。
- xdebug.trace_output_dir #
使用通用xdebug.output_dir设置。
- xdebug.trace_enable_trigger #
使用xdebug.mode =trace和xdebug.start_with_request = trigger。
- xdebug.trace_enable_trigger_value #
使用通用xdebug.trigger_value设置。
5.3. 参数文档
Xdebug 2.x 的参数文档
http://www.xdebug.org.cn/docs/all_settings
Xdebug 3.x 的参数文档
叼茂SEO.bfbikes.com
叼茂SEO.bfbikes.com
怎么收藏这篇文章?
不错不错,我喜欢看 https://www.237fa.com/
文章的确不错啊https://www.cscnn.com/
兄弟写的非常好 https://www.cscnn.com/
真好呢