我已经设置了 调试工具 在运行 Ubuntu 的本地 Vagrant 实例上。它按预期工作,我可以在我的应用程序中设置断点。

我有一个场景,应用程序向内部 API 发出请求。内部 API 位于同一服务器和同一代码库上。

树图

codebase/
  app/
    root
  api/
    root

该应用程序可通过以下方式访问 https://local.myapplication.com 并且该 API 可以在本地访问 http://local.api.myapplication.com).

如果我现在在 API 的某些代码中设置断点,然后访问 https://local.myapplication.com/some/action/that/triggers/the/api/code 仅当我没有为第一个应用程序初始化 Xdebug 会话时才会触发断点,即,我没有设置 XDEBUG_SESSION_START 查询参数。如果设置了,我的断点将被忽略。

这样做有一定的缺点。如果我在应用程序和 API 中有一个断点,那么我目前无法同时触发这两个断点。我可以触发应用程序断点或 API 断点。

我在用着 崇高文本3 使用插件 https://github.com/martomo/SublimeTextXdebug. 。我的 Xdebug 设置在 php.ini 是:

zend_extension="/usr/lib/php5/20090626/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_host=192.168.3.1
xdebug.remote_port=9000
xdebug.remote_log="/tmp/php5-xdebug.log"

这可以修复吗?任何答案/评论表示赞赏!

有帮助吗?

解决方案

两个选择。如果第一个(更简单)不起作用,那么第二个肯定会起作用。

1 - 为每个 http 请求启动一个新的 Xdebug 会话。

在 php.ini 中,将以下内容添加到 xdebug 设置中:

xdebug.remote_autostart = 1

文档在这里

2 - 同时运行两个 Xdebug 会话。

您需要有两个单独的 IDE/文本编辑器实例来侦听 xdebug - 每个实例位于不同的端口上。您可以将两个实例设置为编辑同一项目,同时它们的 xdebug 服务侦听不同的端口。

例如:

  • 您的“应用程序”-> 端口 9000
  • 您的“内部 API”-> 端口 9001

要使您的“内部 API”在端口 9001 上运行 xdebug,您只需在“内部 API”脚本的开头执行以下操作:

ini_set('xdebug.remote_port', '9001');

其他提示

使用 conditional breakpoints. 。您可以使它们依赖于任何 PHP 代码。例如。为每个入口点设置一个常量并检查它。或者检查请求 URL。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top