【问题标题】:Use XDebug on a multi-user environment在多用户环境中使用 XDebug
【发布时间】:2020-02-06 22:28:44
【问题描述】:

我正在与其他人共享本地服务器上进行开发。这个服务器有一个 Apache/PHP 实例,但它有多个“可用站点”(VirtualHost)供不同的人使用。

我想让 XDebug 正常工作,这样我们每个人都可以独立使用它。问题是如果我们启用 XDebug,例如,我的 IDE 连接到服务器并且我设置了一个断点,那么如果其他人正在浏览该页面,它就会停止,即使它在他/她自己的 VirtualHost 中。

关于如何正确设置的任何提示?

编辑:

忘了提到网络服务器是在 Docker 中运行的。 这是 XDebug 的当前配置:

# automatically start debugger on every request
xdebug.remote_enable=1
xdebug.remote_autostart=1
xdebug.remote_port=9000

# send all debug requests to 127.0.0.1
xdebug.remote_connect_back=0
xdebug.remote_host=host.docker.internal

#log all xdebug requests to see is it working correctly
xdebug.remote_log=/var/log/debug.log

谢谢。

【问题讨论】:

    标签: apache2 xdebug vhosts


    【解决方案1】:

    这根本不应该发生,除非您打开了xdebug.remote_autostart并且硬编码了xdebug.remote_host(而不是使用xdebug.remote_connect_back)。你真的不想在多用户环境中硬编码xdebug.remote_host

    调试会话仅在检测到 XDEBUG_SESSION_START(这是浏览器扩展将设置的内容,或者将其添加到 GET/POST 参数时)以及继续请求时才初始化。

    也没有这样的概念:

    我的 IDE 已连接到服务器

    在每次请求时,Xdebug(如果设置为使用 cookie 触发)将连接 IDE。它使用xdebug.remote_host 设置,或者如果xdebug.remote_connect_back 启用连接,则使用推断的IP 地址。请求结束,该连接被切断。您可以使用xdebug.remote_log=/tmp/xdebug.log 创建一个日志文件,该文件将指示何时建立连接,以及它们是否有效。

    【讨论】:

    • 感谢您的快速回复,德里克。关于这个:“我的 IDE 已连接到服务器”,我的错误。正如您所说,我的意思是相反,XDebug 将连接到 IDE。我会试试你说的,看看是否有效
    • 我一直在看,德里克。正如你所说的 remote_autostart 和 remote_host 已设置。我已经使用当前配置编辑了我的原始问题。 Web 服务器在 Docker 上运行。而且我不是配置这些东西的人。因此,鉴于 XDebug 在 Docker 上运行,我不确定它是否会有所不同
    • 我也一直在尝试一些设置......现在似乎 XDebug 得到了一些东西。但是:[5329] I:找到远程地址,连接到 10.255.0.2:9000。 [5329] E:连接到客户端超时(等待:200 毫秒)。 :-( 我猜这与 XDebug 在 Docker 容器中有关?所以它没有选择正确的 IP 地址?我在本地网络中的计算机地址类似于 192.168...
    • 这表明您仍然有 remote_connect_back?由于 Docker 使用不同的子网络,这不适用于 docker。我不确定如何在 docker 挡道的情况下进行多用户操作。我不太清楚如何把这个圆孔弄成方形。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-11
    • 2011-07-06
    • 2018-09-19
    相关资源
    最近更新 更多