使用vagrant/puppet自动设置xdebug.remote_host ip地址

gre*_*reg 7 php xdebug puppet vagrant

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

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

VagrantFile:

config.vm.network :forwarded_port, guest: 9000, host: 9000
Run Code Online (Sandbox Code Playgroud)

.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'
Run Code Online (Sandbox Code Playgroud)

我也试过了 xdebug.remote_host=localhost

来自vagrant机器的ifconfig结果:

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
Run Code Online (Sandbox Code Playgroud)

phpinfo()函数

REMOTE_ADDR 192.168.61.2

REMOTE_PORT 51886

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

Mih*_*lpo 10

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

xdebug.remote_connect_back = 1
Run Code Online (Sandbox Code Playgroud)

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

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

如果这不起作用:

我有相同的情况,然后我需要VirtualBox VM配置,这应该适用于任何IP的任何机器.所以,我这样做了:

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

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

因此,解决方案是将您的IP地址设置为某个"常数",只是虚拟.