![](/img/trans.png)
[英]xdebug ignores xdebug.remote_host=localhost:8080 using NetBeans
[英]Auto setting xdebug.remote_host ip address with vagrant/puppet
我正在使用puppet進行配置來設置Vagrant環境。
我遇到了一個問題,我希望xdebug在運行vagrant up
時“正常工作”但是我需要在php.ini文件中指定主機ip地址xdebug.remote_host
,顯然每個都會有所不同機器配置使用所以我想在發布vagrant up
時自動更新該值的方法。
VagrantFile:
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
來自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
phpinfo()函數
REMOTE_ADDR 192.168.61.2
REMOTE_PORT 51886
只是為了確認,如果我給我的osx主機上的remote_host
我的實際IP地址,它可以正常工作。
如http://www.xdebug.org/docs/all_settings中所述 ,您可以設置選項
xdebug.remote_connect_back = 1
因此,xdebug將連接回請求網頁的主機,並將忽略選項“remote_host”。
此解決方案有一個問題:如果為任何請求和用戶啟用xdebug,打開網頁沒有運行xdebug客戶端(等待來自服務器的連接),並且具有非關閉的9000
端口,則服務器將等待很長時間 (嘗試連接到客戶端的xdebug會話),最終可以加載頁面。 我有這個問題的Windows 7機器,因為它的防火牆實際上並沒有關閉端口,連接軟件無法理解,沒有人在監聽端口。
如果這不起作用:
我有相同的情況,然后我需要VirtualBox VM配置,這應該適用於任何IP的任何機器。 所以,我這樣做了:
192.168.100.1
,因此,我的REAL機器有兩個地址: eth0:192.168.1.2
和vboxnet0:192.168.100.1
。 IP=192.168.100.100
,默認網關= 192.168.100.1
remote_ip=192.168.100.1
現在,我有3台這台機器的副本(我的副本,我的同事使用了2份),它工作正常!
因此,解決方案是將您的IP地址設置為某個“常數”,只是虛擬。
如果自定義流浪漢機器運行GNU / Linux或使用docker鏡像,您可以通過以下命令找到ip:
netstat -rn | grep "^0.0.0.0 " | cut -d " " -f10
要獲取IP,你第一次運行后囤以下命令:
vagrant ssh #login into the machine
另一個有趣的案例是你在一個在流浪漢GNU / Linux映像中生成的docker容器中運行php。 在這種情況下,不要嘗試修改正在運行的php映像的shell並運行上面的命令,通過運行命令找到VM連接回主機的ip:
netstat -rn | grep "^0.0.0.0 " | cut -d " " -f10
在正在運行的VM的shell中,而不是在正在運行的docker容器上(使用docker exec
或docker-compose exec
)。 如果是入口點腳本,則為XDEBUG ip設置環境變量,並在該值為空時自動設置該值,然后自動設置ip。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.