PhpStorm 2021.3 Help

通过 Xdebug 代理进行多用户调试

当您启动调试会话时,Xdebug 扩展连接到运行 PhpStorm 的 IP 地址,指定为xdebug.remote_host(对于 Xdebug 2)或xdebug.client_host(对于 Xdebug 3)值。PhpStorm 接受此连接并可以通过它与 Xdebug 通信。Xdebug 仅支持连接单个 IP 地址,出于安全原因,不会自动连接回运行浏览器的 IP 地址。为了在多用户环境中调试 PHP 应用程序,Xdebug 提供了一个所谓的DBGp 代理

使用代理时,PHP Xdebug 扩展不再直接连接到 PhpStorm,而是连接到 DBGp 代理服务器。团队中的所有开发人员依次连接到该代理。每个开发人员都有一个在此代理上运行的单独调试会话,这使得在同一台服务器上对相同代码进行多用户调试成为可能。

Ps Xdebug Schema 代理

通过 Xdebug 代理 (DBGp) 服务器配置多用户调试

下载并安装 DBGp 代理

为了能够启动调试会话,您需要在服务器上运行 DBGp 代理,Web 服务器本身以及所有开发人员机器都可以访问该代理。我们可以将代理安装在 Web 服务器上、同一网络中的机器上,或者通过 SSH 隧道访问的机器上。

  1. 在DBGp 代理工具下载页面上为您的平台下载dbgpProxy可执行文件。

  2. 在 Web 服务器或可以与 Web 服务器和所有开发人员机器进行通信的机器上启动 DBGp 代理。DBGp 代理可执行文件接受两个主要参数:

    • -i:用于侦听 IDE(客户端)连接的主机和端口

    • -s: 侦听调试器引擎(服务器)连接的主机和端口

    有关详细信息,请参阅DBGp 代理工具文档

    在下面的示例中,我们启动了一个代理,它在环回地址127.0.0.1和端口9001上侦听调试器连接,并在机器 IP 地址和端口9000上侦听开发人员。

    dbgpProxy.exe -i 192.168.1.11:9000 -s 127.0.0.1:9001
    ./dbgpProxy-macos -i 192.168.1.11:9000 -s 127.0.0.1:9001
    ./dbgpProxy -i 192.168.1.11:9000 -s 127.0.0.1:9001

    DBGp 代理将在启动时确认这些设置:

    Ps Pdgp 运行

确保在 Web 服务器上安装并配置了 Xdebug

  1. 在编辑器中打开活动的php.ini文件:

    1. 在“设置/首选项”对话框 ( Ctrl+Alt+S) 中,单击PHP

    2. 在打开的PHP页面上,单击CLI Interpreter字段浏览按钮旁边的。

    3. 在打开的CLI 解释器对话框中,配置文件只读字段显示活动php.ini文件的路径。单击在编辑器中打开

  2. 确保至少指定了以下设置:

    [xdebug] zend_extension="<xdebug 扩展的路径>" xdebug.mode=debug xdebug.client_host=127.0.0.1 xdebug.client_port="<Xdebug 连接的端口(默认为9003)>"
    [xdebug] zend_extension="<xdebug 扩展的路径>" xdebug.remote_enable=1 xdebug.remote_host=dbgp_proxy_hostname_or_ip xdebug.remote_port="<Xdebug 连接的端口(默认为9000)>"

有关配置 Xdebug 的详细信息,请参阅配置 Xdebug

配置从 PhpStorm 访问 DBGp 代理服务器

  1. 在主菜单中,选择工具 | DBGp 代理 | 注册 IDE

  2. 在打开的DBGP 代理对话框中,指定IDE 密钥值(这应该是每个开发人员的唯一值,因为它标识调试会话)、Xdebug 代理服务器的主机和端口。

    Pdgp 注册 Ide
  3. 单击“确定”连接指定的代理服务器。服务器注册凭据,并确认连接。

    Pdgp 注册 Ide 已连接

    PhpStorm 也会通知连接成功。

    Pdgp 注册 Ide 成功
  4. 要更新现有凭据,请选择工具 | DBGp 代理 | 主菜单中的配置。在打开的DBGp 代理对话框中,编辑 IDE 密钥、主机和端口设置。

    要放弃当前凭据,请选择工具 | DBGp 代理 | 在主菜单中取消 IDE 注册。

在浏览器中启动调试会话

  1. 确保您使用的浏览器调试扩展设置为已注册的 IDE 密钥:

    Pdgp IDE 密钥
  2. 在 PhpStorm 中,通过单击开始侦听 PHP 调试连接按钮工具栏或选择Run |启用侦听传入调试连接。在主菜单中开始侦听 PHP 调试连接。这将确保 PhpStorm 在启动调试会话时做出反应并自动打开调试工具窗口。在启动脚本之前,请确保设置了断点,或者在Settings/Preferences对话框的Debug页面上启用了Break at first line in PHP scripts选项。Ctrl+Alt+S

    通过在浏览器中刷新页面来启动调试会话。

    Pdgp 调试开始

故障排除

远程文件路径未映射到项目中的任何文件路径

在某些情况下,调试器可以连接,但我们收到错误消息,表明没有定义远程文件和项目文件之间的映射。这意味着 PhpStorm 无法确定哪个本地文件对应于正在调试的文件。

未配置映射

我们可以通过单击单击设置路径映射并提供必要的路径映射来解决此问题。此外,我们可以使用配置与 Web 服务器同步中概述的技术来配置这些映射。

由于目标机器主动拒绝,无法建立连接

  • 确保 PhpStorm 已向DBGp 代理注册,并且它正在侦听传入的调试器连接

  • 确保在 PhpStorm 和调试器小书签或浏览器扩展中设置了正确的 IDE 密钥

  • 是否有防火墙阻止与 DBGp 代理的连接?如果是这样,请确保 PHP Xdebug 扩展可以连接到它,以及开发人员机器。您可以使用http://canyouseeme.org或类似服务来检查打开的入站端口。

  • 是否有防火墙阻止与 IDE 的连接?确保可以从 DBGp 代理机器连接到 PhpStorm。您可以使用http://canyouseeme.org或类似服务来检查打开的入站端口。

  • DBGp 代理应用程序绑定到错误的 IP 地址。使用0.0.0.0作为地址运行它,以便它绑定到 DBGp 代理服务器上的任何 IP 地址。例如,运行dbgpproxy -i 0.0.0.0:9001 -s 0.0.0.0:9000.

当在同一台机器上安装 Xdebug 和 DBGp 代理在 PhpStorm 中测试多用户调试时,还有一些额外的事情需要验证:

  • PhpStorm 绑定到错误的 IP 地址。当 DBGp 代理在同时运行 PhpStorm 的本地计算机上运行时,IDE 可能使用了错误的网络子网。要解决此问题,请选择工具 | DBGp 代理 | 配置...在主菜单中并将 DBGp 代理服务器 IP 地址设置为0.0.0.0。然后,尝试使用 DBGp 代理重新注册 PhpStorm。

  • 存在端口冲突。在本地机器上测试 DBGp 时,PhpStorm 和 DBGp 可能都希望绑定到同一个端口。通过将 DBGp 配置为使用不同的端口或更改PHP |上的 PhpStorm 的 Xdebug 端口来确保不是这种情况。设置/首选项对话框的调试页面Ctrl+Alt+S

最后修改:2022 年 3 月 18 日