vscode+XDebug调试远程环境(虚拟机)上的PHP代码

发布于 2019-12-10  267 次阅读


作者: 郑晓 分类: PHP 发布于: 2017-11-21 15:26 浏览(13,308) 没有评论


对于简单的项目或仅仅想知道某一位置的某个变量是什么值,直接使用var_dump配置exit来打印和中断就可以了,方便又快捷,而对于大型项目的调试,或想了解某个系统的整个运行过程,xdebug可能会是更好的选择。

网上大多数xdebug教程中的项目代码和运行环境是配置在本地,IDE也是在本地,而我所使用的环境是运行于虚拟机中,所以xdebug配置起来稍有不同。

环境介绍:
本地:win7 + vscode
远程:ubuntu14 + lnmp + xdebug
虚拟机平台:virtualbox + vagrant

即PHP的运行环境在远程虚拟机中,项目代码放在本地,使用nfs共享映射到虚拟机中运行,虚拟机使用NAT方式联网。

1.ssh到虚拟机,检查并安装php的xdebug扩展

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”是允许远程调试
“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": "${workspaceRoot}",
    "serverSourceRoot": "/home/wwwroot/weiphp.dev",
    "port": 9000
},
{
    "name": "Launch currently open script",
    "type": "php",
    "request": "launch",
    "program": "${file}",
    "cwd": "${fileDirname}",
    "port": 9000
}

以上,其中”localSourceRoot”是项目代码在本地的路径,设置的值是当前工作区根目录,也就是我项目根目录。”serverSourceRoot”是远程虚拟机中的代码路径,”port”是本地IDE在debug时会监听的端口,远程xdebug与vscode通信时就是使用这个端口。

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

6.结束
工作区中在需要调试的文件中设置断点,F5启动调试(Listen for XDebug),编辑器上方显示
debug浮动栏无其它报错,应该就成功了, 打开浏览器,访问项目中设置了断点的功能或页面,编辑器中会自动中断在断点处。

vscode+XDebug调试远程环境(虚拟机)上的PHP代码  第1张

       

本文采用知识共享署名-非商业性使用 3.0 中国大陆许可协议进行许可,转载时请注明出处及相应链接。

本文永久链接: https://www.zh30.com/vscode-xdebug-remote-vagrant-php.html



点击数:131


一沙一世界,一花一天堂。君掌盛无边,刹那成永恒。