當(dāng)前位置:博客首頁>>PHP >> 閱讀正文

vscode+XDebug調(diào)試遠(yuǎn)程環(huán)境(虛擬機(jī))上的PHP代碼

作者: 鄭曉 分類: PHP 發(fā)布于: 2017-11-21 15:26 瀏覽:23,010 沒有評論


對于簡單的項目或僅僅想知道某一位置的某個變量是什么值,直接使用var_dump配置exit來打印和中斷就可以了,方便又快捷,而對于大型項目的調(diào)試,或想了解某個系統(tǒng)的整個運行過程,xdebug可能會是更好的選擇。

網(wǎng)上大多數(shù)xdebug教程中的項目代碼和運行環(huán)境是配置在本地,IDE也是在本地,而我所使用的環(huán)境是運行于虛擬機(jī)中,所以xdebug配置起來稍有不同。

環(huán)境介紹:
本地:win7 + vscode
遠(yuǎn)程:ubuntu14 + lnmp + xdebug
虛擬機(jī)平臺:virtualbox + vagrant

即PHP的運行環(huán)境在遠(yuǎn)程虛擬機(jī)中,項目代碼放在本地,使用nfs共享映射到虛擬機(jī)中運行,虛擬機(jī)使用NAT方式聯(lián)網(wǎng)。

1.ssh到虛擬機(jī),檢查并安裝php的xdebug擴(kuò)展

2.配置php.ini中的xdebug

zend_extension=xdebug.so
[XDebug]
xdebug.remote_enable = on
xdebug.remote_autostart = 1
;xdebug.remote_host = 192.168.10.1
xdebug.remote_port = 9000
xdebug.remote_connect_back = 1
xdebug.auto_trace = 1
xdebug.collect_includes = 1
xdebug.collect_params = 1
xdebug.remote_log = /tmp/xdebug.log

“remote_enable”是允許遠(yuǎn)程調(diào)試
“remote_autostart”遠(yuǎn)程調(diào)試自動啟動?
“remote_host”是指定通過哪個IP進(jìn)行遠(yuǎn)程調(diào)試,也就是你IDE所在的IP(這里是192.168.10.1即是我本地,但當(dāng)下面remote_connect_back設(shè)置了時,這個IP設(shè)置無效,所以我注釋了),
“remote_port”是在vscode中設(shè)置的監(jiān)聽端口,是本地的端口哦~ 即當(dāng)開始調(diào)試時,xdebug將與這個端口通訊
“remote_connect_back”不知道是什么意思,只是如果開啟此,將忽略上面的 xdebug.remote_host 的設(shè)置
其它的可自行搜索xdebug配置說明。

3. 重啟php-fpm,或web環(huán)境

4.vscode中安裝插件”PHP Debug”

5.配置launch.json

{
"name": "Listen for XDebug",
"type": "php",
"request": "launch",
"stopOnEntry":false,
"localSourceRoot": "${workspaceRoot}",
"serverSourceRoot": "/home/wwwroot/weiphp.dev",
"port": 9000
},
{
"name": "Launch currently open script",
"type": "php",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
"port": 9000
}

以上,其中”localSourceRoot”是項目代碼在本地的路徑,設(shè)置的值是當(dāng)前工作區(qū)根目錄,也就是我項目根目錄。”serverSourceRoot”是遠(yuǎn)程虛擬機(jī)中的代碼路徑,”port”是本地IDE在debug時會監(jiān)聽的端口,遠(yuǎn)程xdebug與vscode通信時就是使用這個端口。

好像主要就是第一部分,第二部分目前不需要

6.結(jié)束
工作區(qū)中在需要調(diào)試的文件中設(shè)置斷點,F(xiàn)5啟動調(diào)試(Listen for XDebug),編輯器上方顯示debug浮動欄無其它報錯,應(yīng)該就成功了, 打開瀏覽器,訪問項目中設(shè)置了斷點的功能或頁面,編輯器中會自動中斷在斷點處。

? ? ? ?

本文采用知識共享署名-非商業(yè)性使用 3.0 中國大陸許可協(xié)議進(jìn)行許可,轉(zhuǎn)載時請注明出處及相應(yīng)鏈接。

本文永久鏈接: http://yjfs.org.cn/vscode-xdebug-remote-vagrant-php.html

發(fā)表評論

change vcode