PHP vscode+XDebug 远程断点调试服务器上的代码
参考链接
https://www.cnblogs.com/ryanzheng/p/10575790.html
断断续续做php五年了,前期只在开发机器上debug,中期从不debug,有什么问题var_dump一下,现在遇到一个fpdf的问题,无奈必须debug服务器。
我只是记录一下自己遇到的问题,基本完全按照原文思路来。
环境介绍:
本地:win7 + vscode
远程:CentOS + Apache + PHP5.6 + xdebug
PHP的运行环境在远程服务器中,项目代码放在本地,使用nfs共享映射到虚拟机中运行。
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配置说明。
这里由于我使用的是宝塔,所有直接打出phpinfo
发现真的有好几个不符合要求,于是将参考链接中的配置全部放了进去
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": 9000 }, { "name": "Launch currently open script", "type": "php", "request": "launch", "program": "${file}", "cwd": "${fileDirname}", "port": 9000 }
以上,其中”localSourceRoot”是项目代码在本地的路径,设置的值是当前工作区根目录,也就是我项目根目录。
”serverSourceRoot”是远程虚拟机中的代码路径,”port”是本地IDE在debug时会监听的端口,远程xdebug与vscode通信时就是使用这个端口。
以上设置完毕后就可以开始断点调试!!!
然后我试了是,并没有卵用,肯定是哪里配置错了呀,于是好吧,一个一个来,先本地debug,因为之前从没在vscode,而是曾经在phpstrom中debug
zend_extension = "E:\Develop\php-5.6.29\ext\php_xdebug-2.5.0-5.6-vc11-x86_64.dll" ;允许远程IDE调试 xdebug.remote_enable = true ;远程主机 xdebug.remote_host = 127.0.0.1 ;xdebug.remote_port = 9000 ;默认端口 9000 xdebug.profiler_enable = on ;临时跟踪信息输出 xdebug.trace_output_dir = "E:\Develop\ApacheServer\xdebug\trace" xdebug.profiler_output_dir = "E:\Develop\ApacheServer\xdebug\profiler" ;其余参数 ;开启自动跟踪。自动打开"监测函数调用过程"的功模。该功能可以在你指定的目录中将函数调用的监测信息以文件的形式输出 xdebug.auto_trace = On ;开启异常跟踪 xdebug.show_exception_trace = On ;开启远程调试自动启动 xdebug.remote_autostart = On ;收集变量 xdebug.collect_vars = On ;收集返回值 xdebug.collect_return = On ;收集参数 xdebug.collect_params = On ;显示局部变量 xdebug.show_local_vars = On ;显示默认的错误信息 xdebug.default_enable = On ;用于zend studio远程调试的应用层通信协议 xdebug.remote_handler = dbgp ;如果设得太小,函数中有递归调用自身次数太多时会报超过最大嵌套数错 xdebug.max_nesting_level = 10000 xdebug.idekey = PHPSTORM
博主vscode不熟,偶然间发现这个launch.json配置文件是全局的
于是终于能在本地debug了,debug界面好漂亮,超级简洁
结果我在本地debug解决了问题,远程debug还是不行,留着这个帖子下次搞吧,别骂我
原文地址:https://www.cnblogs.com/mihe/p/11013854.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Qt音视频开发10-ffmpeg控制播放
- 拿好了!Linux 运维必备的 13 款实用工具!
- 自制CA证书设置ssl证书
- MySQL数据迁移TcaplusDB实践
- TKE之初识容器探测器
- 2.3.2 JDK动态代理 -《SSM深入解析与项目实战》
- mac设备安装nginx注意事项
- 《研发运营安全白皮书(2020年)》深度解读:全生命周期安全体系将是未来趋势
- 深度学习故障诊断:残差收缩网络 Residual Shrinkage Networks
- Java基于SSM的个人博客系统(源码 包含前后台)
- 聊聊RespServer
- Spring Boot系列之读取配置
- Flutter中State深入分析理解
- Xenomai3.1+ubuntu 18.04/16.04
- 聊聊RespCommand