Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vagrant 流浪汉+;Xdebug&x2B;原子_Vagrant_Xdebug_Atom Editor_Php Ini - Fatal编程技术网

Vagrant 流浪汉+;Xdebug&x2B;原子

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

我在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

我尝试了各种不同的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连接到客户端,而不是