7

我正在使用 puppet 设置 Vagrant 环境进行配置。

我遇到了一个问题,我希望 xdebug 在运行时“正常工作”,vagrant up但是我需要在 php.ini 文件中指定主机 IP 地址xdebug.remote_host,显然这在使用配置的每台机器上都会有所不同所以我想要一种在发布时自动更新该值的方法vagrant up

流浪文件:

config.vm.network :forwarded_port, guest: 9000, host: 9000

.ini 设置:

'xdebug.default_enable=1',
'xdebug.remote_enable=1',
'xdebug.remote_handler=dbgp',
'xdebug.remote_host=localhost:9000',
'xdebug.remote_port=9000',
'xdebug.remote_autostart=0',
'xdebug.max_nesting_level=250'

我也试过了xdebug.remote_host=localhost

ifconfig来自 vagrant 机器的结果:

vagrant@precise64 ~ : ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0c:29:cf:f9:89
      inet addr:192.168.61.142  Bcast:192.168.61.255  Mask:255.255.255.0

phpinfo()

REMOTE_ADDR 192.168.61.2

REMOTE_PORT 51886

只是为了确认,如果我提供remote_host我在我的 osx 主机上的实际 IP 地址,它可以正常工作。

4

2 回答 2

11

http://www.xdebug.org/docs/all_settings中所述,您可以设置选项

xdebug.remote_connect_back = 1

因此,xdebug 将连接回请求网页的主机,并将忽略选项“remote_host”。

这个解决方案有一个问题:如果您为任何请求启用xdebug,并且用户打开网页没有正在运行的xdebug客户端(等待来自服务器的连接),并且有非关闭9000端口,服务器将等待很长时间时间(尝试连接到客户端的 xdebug 会话),然后才能最终加载页面。我在 windows 7 机器上遇到了这个问题,因为它的防火墙实际上并没有关闭端口,并且连接软件无法理解,没有人在监听端口。

如果这不起作用:

我有同样的情况,然后我需要配置 VirtualBox VM,它应该可以在任何具有任何 IP 的机器上工作。所以,我是这样设计的:

  1. 我在 VirtualBox 中创建了虚拟网络接口(我不知道,在 vagrant 中是否有任何选项,但应该有),并将其本地地址设置为192.168.100.1,因此,我的真实机器有两个地址:eth0:192.168.1.2vboxnet0:192.168.100.1.
  2. 我已经使用以下值配置了虚拟机:IP=192.168.100.100,默认网关 =192.168.100.1
  3. 将我的 XDebug 配置为remote_ip=192.168.100.1

现在,我有这台机器的 3 个副本(我的副本和我的同事使用的 2 个副本),它工作正常!

因此,解决方案是将您的 IP 地址设置为某个“常量”,只是虚拟的。

于 2013-08-22T07:38:01.767 回答
0

如果是运行 GNU/Linux 或使用 docker 映像的自定义 vagrant 机器,您可以通过以下命令找到 ip:

netstat -rn | grep "^0.0.0.0 " | cut -d " " -f10

要获取 ip,请先运行以下命令

vagrant ssh #login into the machine

奖金信息,以防您或想在 vagrant 中运行 docker

还有一个有趣的案例是您在 docker 容器中运行 php,该容器是在 vagrant GNU/Linux 映像中生成的。在这种情况下,不要尝试显示正在运行的 php 映像的 shell 并运行上面的命令,通过运行命令找到VM连接回主机的 ip:

netstat -rn | grep "^0.0.0.0 " | cut -d " " -f10

在正在运行的VM的外壳中,而不是在正在运行的 docker 容器上(使用docker execdocker-compose exec)。在入口点脚本的情况下,为 XDEBUG ip 设置一个环境变量,并自动设置该值,以防这个为空,然后自动设置 ip。

于 2019-08-19T11:04:35.523 回答