我已经在运行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会话时才会触发,也就是说,我没有设置XDEBUG_SESSION_START
查询参数。如果设置了断点,则忽略断点。
这样做有一定的缺点。如果我在应用程序和API中都有一个断点,我就不能同时触发它们。我可以触发应用程序断点,也可以触发API断点。
我使用SublimeText 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会话。在php.ini中,添加以下内容到xdebug设置中:
xdebug.remote_autostart = 1
查看这里的文档
2 -同时运行两个Xdebug会话
您需要有两个独立的IDE/文本编辑器实例来监听xdebug—每个实例在不同的端口上。您可以设置两个实例来编辑同一个项目,而它们的xdebug服务监听不同的端口。
例如:
- 您的"应用程序"->端口9000
- 您的"内部API"->端口9001
ini_set('xdebug.remote_port', '9001');
使用conditional breakpoints
。您可以让它们依赖于任何PHP代码。例如,为每个入口点设置一个常量并检查它。或者检查请求URL