我已经在运行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服务在不同的端口上监听。
例如:
要使您的“内部API”在端口9001上运行xdebug,您只需在“内部API”脚本的开头执行以下操作:
ini_set('xdebug.remote_port', '9001');
关于php - 使用Xdebug共享相同代码库的两个应用程序中的断点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24022209/