php中在虛擬機器環境下使用xdebug注意事項

來源:互聯網
上載者:User


問題現象: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網路模式的虛擬環境比較蛋疼,如果換成橋接模式讓宿主機和虛擬機器同一個網段,那麼問題迎刃而解。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.