PHP vscode+XDebug 遠程斷點調試服務器上的代碼


對於簡單的項目或僅僅想知道某一位置的某個變量是什么值,直接使用var_dump配置exit來打印和中斷就可以了,方便又快捷,

而對於大型項目的調試,或想了解某個系統的整個運行過程,xdebug可能會是更好的選擇。

網上大多數xdebug教程中的項目代碼和運行環境是配置在本地,IDE也是在本地,

而我所使用的環境是運行於遠程服務器中,所以xdebug配置起來稍有不同。

 

環境介紹:
本地:win10 + vscode
遠程:CentOS + LNMP + xdebug

即PHP的運行環境在遠程服務器中,項目代碼放在本地,使用nfs共享映射到虛擬機中運行。

 編譯安裝 xdebug 可以參考下面的官方文檔:

https://xdebug.org/wizard

1.ssh到虛擬機,檢查並安裝php的xdebug擴展

2.配置php.ini中的xdebug

zend_extension=xdebug.so
[XDebug]
xdebug.remote_enable = on
xdebug.remote_autostart = 1
;xdebug.remote_host = host.docker.internal
xdebug.remote_port = 9001
xdebug.remote_connect_back = 0
xdebug.auto_trace = 1
xdebug.collect_includes = 1
xdebug.collect_params = 1
xdebug.remote_log = /tmp/xdebug.log

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

 

3. 重啟php-fpm,或web環境

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

5.配置launch.json

{
    "name": "Listen for XDebug",
    "type": "php",
    "request": "launch",
    "stopOnEntry":false,
    "localSourceRoot": "Z://php_project/",
    "serverSourceRoot": "/home/ryan/php_project/",
    "port": 9001
},
{
    "name": "Launch currently open script",
    "type": "php",
    "request": "launch",
    "program": "${file}",
    "cwd": "${fileDirname}",
    "port": 9001
}

以上,其中”localSourceRoot”是項目代碼在本地的路徑,設置的值是當前工作區根目錄,也就是我項目根目錄。

”serverSourceRoot”是遠程虛擬機中的代碼路徑,”port”是本地IDE在debug時會監聽的端口,遠程xdebug與vscode通信時就是使用這個端口。

 

以上設置完畢后就可以開始斷點調試!!!

 

參考鏈接:

https://www.zh30.com/vscode-xdebug-remote-vagrant-php.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM