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

我有一个方案,其中应用程序向内部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 session 时(即,我未设置XDEBUG_SESSION_START查询参数),才会触发该断点。如果设置,我的断点将被忽略。

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

我正在使用Sublime Text 3和插件https://github.com/martomo/SublimeTextXdebug。我在php.ini中的Xdebug设置是:
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 session 。

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

xdebug.remote_autostart = 1

参见documentation here

2-同时运行两个Xdebug session 。

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

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

  • 要使您的“内部API”在端口9001上运行xdebug,您只需在“内部API”脚本的开头执行以下操作:
    ini_set('xdebug.remote_port', '9001');
    

    关于php - 使用Xdebug共享相同代码库的两个应用程序中的断点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24022209/

    10-16 09:40