Vagrant 流浪汉+;Xdebug&x2B;原子
我在OSX上安装了一个安装了xdebug的vagrant box,但我很难让Atom xdebug插件(Vagrant 流浪汉+;Xdebug&x2B;原子,vagrant,xdebug,atom-editor,php-ini,Vagrant,Xdebug,Atom Editor,Php Ini,我在OSX上安装了一个安装了xdebug的vagrant box,但我很难让Atom xdebug插件(php debug)连接到它 我粘贴了phpinfo()数据输入到xdebug验证站点,它说一切都很好。您可以看到所有xdebug设置 我在vagrant文件中映射了端口9000 config.vm.network :forwarded_port, guest: 9000, host: 9000 vagrant box具有仅主机的网络,该网络将192.168.10.100公开为服务器的IP
php debug
)连接到它
我粘贴了phpinfo()代码>数据输入到xdebug验证站点,它说一切都很好。您可以看到所有xdebug设置
我在vagrant文件中映射了端口9000
config.vm.network :forwarded_port, guest: 9000, host: 9000
vagrant box具有仅主机的网络,该网络将192.168.10.100
公开为服务器的IP
我尝试了各种不同的xdebug选项,ATOM插件网站上的建议
xdebug.remote_enable=1
xdebug.remote_host=127.0.0.1
xdebug.remote_connect_back=1
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_autostart=true
但这有点让人困惑,因为remote\u connect\u back=1
意味着xdebug将忽略remote\u host
设置-因此不确定为什么两者都在其中-两者都不起作用
每次更改选项后,我都会重新启动apache/php,并检查它们是否加载了phpinfo()代码>
如果我检查谁在监听端口9000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
Atom\x20H 10656 Matt 28u IPv6 0x321cb0a96ba5b593 0t0 TCP *:cslistener (LISTEN)
VBoxHeadl 10889 Matt 19u IPv4 0x321cb0a981a71433 0t0 TCP *:cslistener (LISTEN)
您可以看到vagrant(虚拟盒)和Atom。虽然Atom是IPv6,这很奇怪
但是在ATOM中启用调试器,设置断点并访问站点,什么都不会发生——ATOM从不连接
有什么想法吗?有人用这个吗
但这有点令人困惑,因为remote\u connect\u back=1
意味着xdebug将忽略remote\u host
设置
您是对的——这里不需要该选项——最好将其设置为0
xdebug.remote_host=127.0.0.1
这是错误的(除非您将通过SSH隧道进行调试)。它必须是运行调试客户机(在您的示例中是Atom)的IP是xdebug连接到客户端,而不是其他方式:
这也意味着IP必须是从那个流浪机器上看到的。可能是最简单的方法——看看$\u服务器['REMOTE\u ADDR']
有什么功能
我在vagrant文件中映射了端口9000
config.vm.network :forwarded_port, guest: 9000, host: 9000
config.vm.network:forwarded\u端口,来宾:9000,主机:9000
您不需要在Vagrant中公开9000个端口——没有人会连接到它(就像您在web服务器的端口80中所做的那样)——它是来自VM/来宾操作系统的xdebug,将在外部连接到您的“真实”//主机操作系统
如果有的话——您应该允许该端口上的传出连接,而不是传入连接
如果我检查谁在监听端口9000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
Atom\x20H 10656 Matt 28u IPv6 0x321cb0a96ba5b593 0t0 TCP *:cslistener (LISTEN)
VBoxHeadl 10889 Matt 19u IPv4 0x321cb0a981a71433 0t0 TCP *:cslistener (LISTEN)
这意味着Atom无法通过TCPv4接收传入的xdebug连接。。默认情况下,哪个xdebug将尝试使用(除非您在xdebug.remote\u host
中指定IPv6地址)
如果有的话——收集xdebug日志(xdebug.remote_log
)并查看它尝试连接的位置等
但这有点令人困惑,因为remote\u connect\u back=1
意味着xdebug将忽略remote\u host
设置
您是对的——这里不需要该选项——最好将其设置为0
xdebug.remote_host=127.0.0.1
这是错误的(除非您将通过SSH隧道进行调试)。它必须是运行调试客户机(在您的示例中是Atom)的IP是xdebug连接到客户端,而不是其他方式:
这也意味着IP必须是从那个流浪机器上看到的。可能是最简单的方法——看看$\u服务器['REMOTE\u ADDR']
有什么功能
我在vagrant文件中映射了端口9000
config.vm.network :forwarded_port, guest: 9000, host: 9000
config.vm.network:forwarded\u端口,来宾:9000,主机:9000
您不需要在Vagrant中公开9000个端口——没有人会连接到它(就像您在web服务器的端口80中所做的那样)——它是来自VM/来宾操作系统的xdebug,将在外部连接到您的“真实”//主机操作系统
如果有的话——您应该允许该端口上的传出连接,而不是传入连接
如果我检查谁在监听端口9000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
Atom\x20H 10656 Matt 28u IPv6 0x321cb0a96ba5b593 0t0 TCP *:cslistener (LISTEN)
VBoxHeadl 10889 Matt 19u IPv4 0x321cb0a981a71433 0t0 TCP *:cslistener (LISTEN)
这意味着Atom无法通过TCPv4接收传入的xdebug连接。。默认情况下,哪个xdebug将尝试使用(除非您在xdebug.remote\u host
中指定IPv6地址)
如果有的话--收集xdebug日志(xdebug.remote_log
)并查看它尝试连接的位置等。@LazyOne已经回答了这个问题,但我遇到的问题是由阻止传入流量的防病毒软件(MCAfee)引起的。也许这会对将来的人有所帮助。@LazyOne已经回答了这个问题,但我遇到的问题是由阻止传入流量的防病毒软件(MCAfee)引起的。也许这会对将来的人有所帮助。你从哪里得到这些说明的?有具体的手册吗?在xdebug的总体工作方式上似乎存在误解。1) “但这有点让人困惑,因为remote\u connect\u back=1意味着xdebug将忽略远程主机设置”您是正确的——这里不需要该选项——最好将其设置为0
2)xdebug.remote\u host=127.0.0.1
——这是错误的(除非您将通过SSH隧道进行调试)。它必须是运行调试客户机(在您的示例中是Atom)的IP。是xdebug连接到客户机,而不是其他方式:3)这也意味着IP必须是从那个流浪机器上看到的。获取它的最简单方法——查看$\u SERVER['REMOTE\u ADDR']
4)这也意味着您不需要在Vagrant中公开9000个端口——没有人会连接到它(就像您使用web服务器的端口80所做的那样)——它是来自VM/来宾操作系统的xdebug,将在外部连接到您的“真实的”//主机操作系统。如果有的话——它应该允许该端口上的传出连接,而不是传入连接。5) “如果我检查谁在监听端口9000”,这意味着Atom无法通过TCPv4接收传入的xdebug连接。。默认情况下,哪个xdebug将尝试使用6)如果有的话--收集xdebug日志(xdebug.remote_log
)并查看它尝试连接的位置等。谢谢@LazyOne-我没有意识到xdebug连接到客户端,而不是