Jquery中文网 www.jquerycn.cn
Jquery中文网 >  脚本编程  >  php  >  正文 php中在虚拟机环境下使用xdebug注意事项

php中在虚拟机环境下使用xdebug注意事项

发布时间:2016-10-26   编辑:www.jquerycn.cn
jquery中文网为您提供php中在虚拟机环境下使用xdebug注意事项等资源,欢迎您收藏本站,我们将为您提供最新的php中在虚拟机环境下使用xdebug注意事项资源
此文主要记录在虚拟机xdebug环境下如何解决宿主机zendstudio与xdebug通信的问题,从而根本坚决在调试界面出现57%进度条的问题:


问题现象:zend studio xdebug 57% waiting for xdebug session

作者本人的开发环境通常是windows宿主机器 vmare Linux虚拟机,通过linux的samba功能将虚拟机下的目录共享给windows做磁盘映射,这样的开发环境可以快速的在windows下实现完整的Linux代码调试环境。

今日在虚拟机下给php装xdebug来调试代码时,按照网上的步骤对xdebug做了配置,因为我的虚拟机环境的网络是走NAT的。

linux虚拟机的网段是192.168.2.0/255.255.255.0 ,网关为192.168.2.2.

windows宿主机器的网段是192.168.1.0/255.255.255.0

在windows下浏览器访问虚拟机下的http服务时都是通过vmare 的nat虚拟网卡转发过去,此网卡绑定的p为192.168.2.1。那么问题就来了,虚拟机下获取到的来路请求ip都是192.168.2.1,获取到xdebug的调试请求后转发信息给zend studio时网络却受阻了。我在设置的xdebug端口号是19000.如下如所示:

 

可以从图中看到我们的请求在发送给192.168.2.1 的19000端口时,但是这是卡住的原因是syn_sent的过程网络不通,导致php无法连接到windows宿主机下的zend studio。只要问题定位到就好办了,最快的解决方法就是开启iptables的端口转发,将发送到192.168.2.1 端口19000的数据全部转发给宿主机IP:192.168.1.105。

我们用root配置如下iptabless规则:

iptables -t nat -A OUTPUT -p tcp -d 192.168.2.1 --dport 19000 -j DNAT --to 192.168.1.105:19000

这样我们的zend studio就可以轻松收到php发来的xdebug调试数据了。

用NAT网络模式的虚拟环境比较蛋疼,如果换成桥接模式让宿主机和虚拟机同一个网段,那么问题迎刃而解。

您可能感兴趣的文章:
php中在虚拟机环境下使用xdebug注意事项
php需要虚拟机吗
PHP中利用Xdebug进行远程错误调试
windows电脑能部署django项目么
避坑!用 Docker 搞定 PHP 开发环境搭建
python虚拟环境Pipenv:更高效的管理依赖
怎么安装phpnow
ubuntu下配置php服务器环境
用Apache实现虚拟主机服务
git如何忽略python虚拟环境

[关闭]