XDebug测试环境

  1. CentOS Linux release 7.7.1908 (Core)
  2. VMware® Workstation 15 Pro
  3. 免费版7.5.1
  4. PHP-7.4
  5. XDebug 2.8
  6. PHPStorm 2020.3.3

宝塔安装XDebug

  1. 进入宝塔点击软件商店已安装找到PHP设置
  2. 点击安装扩展找到xdebug插件安装

image.png

  1. 点击左侧配置文件进行插件配置

image.png

  1. zend_extension=/www/server/php/74/lib/php/extensions/no-debug-non-zts-20190902/xdebug.so
  2. xdebug.remote_port=9018
  3. xdebug.remote_autostart=1
  4. xdebug.auto_trace=1
  5. xdebug.remote_host="192.168.1.100"
  6. xdebug.remote_enable=1
  7. xdebug.idekey = "PHPSTORM"

XDebug配置详细说明

zend_extension_ts

  1. zend_extension=/www/server/php/74/lib/php/extensions/no-debug-non-zts-20190902/xdebug.so // linux
  2. zend_extension=/www/server/php/74/lib/php/extensions/no-debug-non-zts-20190902/xdebug.dll // win

指定位置的xdebug插件编译模块

remote_port

  1. xdebug.remote_port=9018

这个端口是xdebug试着去连接远程主机的。9000是一般客户端和被绑定的debug客户端默认的端口。许多客户端都使用这个端口数字

remote_autostart

  1. xdebug.remote_autostart=1

一般来说,你需要使用明确的HTTP GET/POST变量来开启远程debug。而当这个参数设置为On,xdebug将经常试图去开启一个远程debug session并试图去连接客户端,即使GET/POST/COOKIE变量不是当前的

auto_trace

  1. xdebug.auto_trace=1

默认值0。用于设定在脚本运行前是否自动跟踪方法的调用信息。设置xdebug.trace_enable_trigger 1而不是使用此设置

remote_host

  1. xdebug.remote_host="192.168.1.100"

默认值=localhost 指定远程调试的主机名

remote_enable

  1. xdebug.remote_enable=1

默认值=0 是否开启远程调试

idekey

  1. xdebug.idekey = "PHPSTORM"

默认值=complex 指定传递给DBGp调试器处理程序的IDE Key

更多

在上面的Xdebug配置中,我们只配置了6个常用的配置选项。当然,Xdebug还支持更多的配置参数,详情见下表。配置参数选项

  1. 参数值类型与默认值 参数选项描述
  2. xdebug.auto_trace boolean类型,默认值=0 是否在脚本运行之前自动调用相关追踪函数。
  3. xdebug.cli_color integer类型,默认值=0 该参数自2.2版本开始引入。如果值=1,当处于CLI模式或连接虚拟控制台时,Xdebug将高亮显示var_dumps()和堆栈输出,;在Windows中,这需要安装ANSICON工具。如果值=2,不管是否处于CLI模式或连接虚拟控制台,Xdebug都会高亮显示var_dumps()或堆栈输出;这种情况下,你可能会看到转义后的代码。
  4. xdebug.collect_assignments boolean类型,默认值=0 该参数自2.1版本开始引入。用于控制是否为函数跟踪添加变量赋值功能。
  5. xdebug.collect_includes boolean类型,默认值=1 控制是否在跟踪文件中写入include()、include_once()、require()、require_once()等函数中用到的文件名。
  6. xdebug.collect_params integer类型,默认值=0
  7. 控制在调用函数时,是否收集传递给函数的参数信息。如果参数值过大,这可能会占用大量的内存;不过,在Xdebug 2中不会出现该问题,因为Xdebug 2将相关数据写入磁盘中,而不是占用内存。
  8. 如果值=0,则不显示任何信息。
  9. 如果值=1,只显示类型和大小信息,例如:string(6)、array(8)。
  10. 如果值=2,将显示类型和大小,以及全部信息的工具提示。
  11. 如果值=3,将显示变量的全部内容。
  12. 如果值=4,将显示变量的全部内容和变量名。
  13. xdebug.collect_return boolean类型,默认值=0 控制是否在追踪文件中写入函数调用的返回值。
  14. xdebug.collect_vars boolean类型,默认值=0 控制是否收集指定作用域中的变量信息。由于需要反向工程PHP的操作码数组,因此Xdebug的分析速度可能比较慢。
  15. xdebug.coverage_enable boolean类型,默认值=1 该参数自2.2版本开始引入。控制是否允许通过设置内部结构来启用代码覆盖率功能。
  16. xdebug.default_enable boolean类型,默认值=1 当发生异常或错误时,是否默认显示堆栈信息。
  17. xdebug.dump.* string类型,默认值=Empty 这里的*可以是COOKIE, FILES, GET, POST, REQUEST, SERVER, SESSION中的任意一个。用于指定发生错误时是否显示超全局变量数组中的索引变量信息。比如,你想要显示请求的IP地址和请求方式,可以设置为
  18. xdebug.dump.SERVER=REMOTE_ADD,REQUEST_METHOD
  19. 多个索引变量用英文逗号隔开,如果要输出其中的所有变量,可以直接用*,例如:
  20. xdebug.dump.GET=*
  21. xdebug.dump_globals boolean类型,默认值=1 控制是否显示通过xdebug.dump.*定义的所有超全局变量的信息。
  22. xdebug.dump_once boolean类型,默认值=1 如果出现多个错误,控制超全局变量信息是在所有错误中显示,还是只在第一个错误中显示。
  23. xdebug.dump_undefined boolean类型,默认值=1 控制是否显示超全局变量中未定义的值。
  24. xdebug.extended_info integer类型,默认值=1 是否强制进入PHP解析器的"extended_info"模式,这将允许Xdebug以远程调试器对文件或行添加断点。开启此模式将拖慢脚本的允许速度,该参数只能在php.ini中设置。
  25. xdebug.file_link_format string类型,默认值=, 2.2版本开始引入。用于指定堆栈信息中用到的文件名称的链接样式,这允许IDE通过设置链接协议,直接点击堆栈信息中的文件名称,即可快速打开指定的文件。例如:ZendStudio://%f@%l(%f表示文件路径,%f表示行号)。
  26. xdebug.force_display_errors integer类型,默认值=0 2.3版本开始引入。是否强制显示错误信息。
  27. xdebug.force_error_reporting integer类型,默认值=0 2.3版本开始引入。是否强制显示所有错误级别的信息。
  28. xdebug.halt_level integer类型,默认值=0 2.3版本开始引入。指定出现那些错误级别的错误时,中止程序运行。例如:xdebug.halt_level=E_WARNING|E_NOTICE|E_USER_WARNING|E_USER_NOTICE(也仅支持上述4种错误级别)。
  29. xdebug.idekey string类型,默认值=*complex* 指定传递给DBGp调试器处理程序的IDE Key
  30. xdebug.manual_url string类型,默认值=http://www.php.net 仅2.2.1以下版本可用,用于指定从函数堆栈和错误信息链接到的帮助手册的基本URL。
  31. xdebug.max_nesting_level integer类型,默认值=100 指定递归的嵌套层级数。
  32. xdebug.overload_var_dump boolean类型,默认值=1 2.2版本开始引入,当php.ini中的html_error设为1时,Xdebug是否默认使用自身的改进版本来重载var_dump()。
  33. xdebug.profiler_append integer类型,默认值=0 当多个请求映射到相同文件时,指定是覆盖之前的调试信息文件还是追加内容到该文件中。
  34. xdebug.profiler_enable integer类型,默认值=0 指定是否启用Xdebug的性能分析,并创建性能信息文件。
  35. xdebug.profiler_output_dir string类型,默认值=/tmp 指定性能分析信息文件的输出目录
  36. xdebug.profiler_output_name string类型,默认值=cachegrind.out.%p 指定性能分析信息文件的名称
  37. xdebug.remote_enable boolean类型,默认值=0 是否开启远程调试
  38. xdebug.remote_handler string类型,默认值=dbgp 指定远程调试的处理协议
  39. xdebug.remote_host string类型,默认值=localhost 指定远程调试的主机名
  40. xdebug.remote_log string类型,默认值= 指定远程调试的日志文件名
  41. xdebug.remote_mode string类型,默认值=req 可以设为reqjitreq表示脚本一开始运行就连接远程客户端,jit表示脚本出错时才连接远程客户端。
  42. xdebug.remote_port integer类型,默认值=9000 指定远程调试的端口号
  43. xdebug.trace_options integer类型,默认值=0 指定对于之后的请求,追踪文件是追加内容还是覆盖之前内容。
  44. xdebug.trace_output_dir string类型,默认值=/tmp 指定追踪文件的存放目录
  45. xdebug.trace_output_name string类型,默认值=trace.%c 指定追踪文件的名称

开放宝塔对应端口

image.png

配置PHPStrom

  1. 点击File->setting

image.png

  1. 找到Languges & Frameworkes 这一项

image.png

  1. 点击PHP->Debug 安装浏览器Xdebug helper调试插件

image.png
image.png

  1. 设置XDebug调试端口号

image.png

  1. 设置虚拟机地址及端口IEDKey

image.png
HOST 为虚拟机地址

  1. 设置远程本地虚拟机网站项目路径映射以及访问host

image.png
左边为本地项目路径,右边为虚拟机项目路径
配置完成后点击ok进行保存配置基本完成

调试使用

  1. 点击代码左侧选择需要调试的位置

image.png

  1. 点击开始启动调试服务为绿色

image.png

  1. 浏览器开启Xdebug helper插件

image.png

  1. 访问设置代码断点位置的页面即可

image.png