通过 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 代理服务器。 团队中的所有开发人员依次连接到该代理。 每个开发人员都有一个单独的调试会话通过此代理运行,这使得可以在同一服务器上对相同代码进行多用户调试。

通过 Xdebug 代理(DBGp)服务器配置多用户调试
下载并安装 DBGp 代理
为了能够启动调试会话,您需要在一个可以被 Web 服务器本身以及所有开发人员机器访问的服务器上运行一个 DBGp 代理。 我们可以将代理安装在 Web 服务器上、同一网络中的一台机器上,或者通过 SSH 隧道访问的机器上。
在 DBGp Proxy Tool 下载页面上为您的平台下载 dbgpProxy 可执行文件。
在 Web 服务器上或可以同时与 Web 服务器和所有开发人员机器通信的机器上启动 DBGp 代理。 DBGp 代理可执行文件接受两个主要参数:
-i:监听 IDE(客户端)连接的主机和端口-s:监听调试器引擎(服务器)连接的主机和端口
有关更多信息,请参阅 DBGp Proxy Tool 文档。
在以下示例中,我们启动了一个代理,该代理在回环地址 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 代理将确认这些设置:

确保 Xdebug 已安装并在 Web 服务器上配置
在编辑器中打开活动的 php.ini 文件:
在 设置 对话框(Ctrl+Alt+S )中,单击 PHP。
在打开的 PHP 页面上,单击
,位于 CLI 解释器 字段旁边。
在打开的 CLI 解释器 对话框中, 配置文件 只读字段显示活动 php.ini 文件的路径。 点击 在编辑器中打开。
确保至少指定了以下设置:
[xdebug] zend_extension="<path to xdebug extension>" xdebug.mode=debug xdebug.client_host=127.0.0.1 xdebug.client_port="<the port (9003 by default) to which Xdebug connects>"[xdebug] zend_extension="<path to xdebug extension>" xdebug.remote_enable=1 xdebug.remote_host=dbgp_proxy_hostname_or_ip xdebug.remote_port="<the port (9000 by default) to which Xdebug connects>"
有关配置 Xdebug 的更多信息,请参阅 配置 Xdebug。
配置从 PhpStorm 访问 DBGp 代理服务器
从主菜单中选择 。
在打开的 DBGP Proxy对话框中,指定 IDE 键 值(这应该是每个开发人员的唯一值,因为它标识调试会话)、Xdebug 代理服务器的主机和端口。

单击 确定 以连接到指定的代理服务器。 服务器注册凭据并确认连接。

PhpStorm 也会通知成功连接。

要更新现有凭据,请在主菜单中选择 。 在打开的 DBGp Proxy对话框中,编辑 IDE 密钥、主机和端口设置。
要丢弃当前凭据,请在主菜单中选择 。
在浏览器中启动调试会话
故障排查
远程文件路径未映射到项目中的文件路径
在某些情况下,调试器可以连接,但我们会收到错误消息,表明未定义远程文件和项目文件之间的映射。 这意味着 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。
在 PhpStorm 上测试多用户调试,并且 Xdebug 和 DBGp 代理安装在同一台机器上时,需要验证一些额外的事项:
PhpStorm 绑定到了错误的 IP 地址。 当 DBGp 代理运行在与 PhpStorm 同一台本地机器上时,IDE 可能使用了错误的网络子网。 要解决此问题,请在主菜单中选择 ,并将 DBGp 代理服务器的 IP 地址设置为 0.0.0.0 。 然后,尝试重新注册 PhpStorm 到 DBGp 代理。
存在端口冲突。 在本地机器上测试 DBGp 时,PhpStorm 和 DBGp 可能会尝试绑定到同一个端口。 确保不会发生这种情况,可以通过配置 DBGp 使用不同的端口,或者更改 PhpStorm 的 Xdebug 端口(在 页面的 设置 对话框 Ctrl+Alt+S 中)。

