VSCode中PHP使用Xdebug

本地环境

  • windows10
  • php8.2 nts
  • xdebug v3
  • thinkphp v8

下载Xdebug

Xdebug下载地址

从xdebug下载地址,下载最新的xdebug,解压后将php_xdebug.dll放入php目录的ext目录下

配置php.ini

[Xdebug]
zend_extension = php_xdebug
xdebug.client_host = 127.0.0.1
xdebug.client_port = 9003
xdebug.mode = debug,coverage
xdebug.start_with_request = yes
xdebug.idekey=VSCODE

安装扩展

配置launch.json

{// 使用 IntelliSense 了解相关属性。// 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "Launch built-in server and debug","type": "php","request": "launch","runtimeArgs": ["-S","localhost:8000","-t","."],"port": 9003,"serverReadyAction": {"action": "openExternally"}},{"name": "Debug current script in console","type": "php","request": "launch","program": "${file}","cwd": "${fileDirname}","externalConsole": false,"port": 9003},{"name": "Listen for Xdebug","type": "php","request": "launch","port": 9003}]
}

运行调试

配合单元测试

安装phpunit

composer require phpunit/phpunit --dev

因为我用的是tp8,单元测试bootstrap需要启动tp的容器,所以安装一下我的扩展bingher/think-test

composer require bingher/think-test --dev

安装PHPUnit Test Explorer

扩展配置

"phpunit.command": "php",
"phpunit.phpunit": "vendor/bin/phpunit",
"phpunit.showAfterExecution": "always",
"phpunit.debuggerConfig": "Listen for Xdebug",
"phpunit.xdebugPort": 9003

重点是phpunit.command,phpunit.phpunit,我原来仅配置phpunit.phpunit: vendor/bin/phpunit.bat 发现扩展执行了一直在转圈圈,调试模式报错: Error: spawn -dxdebug.mode=debug ENOENT at Process.ChildProcess._handle.onexit (node:internal/child_process:285:19) at onErrorNT (node:internal/child_process:483:16) at processTicksAndRejections (node:internal/process/task_queues:82:21)

根据以上配置后PHPUnit Test Explorer顺利运行

phpunit.xml

<phpunit colors="true" verbose="true" bootstrap="./vendor/bingher/think-test/src/init.php"><coverage cacheDirectory="./runtime/phpunit/" pathCoverage="true"><include><directory suffix=".php">./app/</directory></include><report><html outputDirectory="./runtime/phpunit/" lowUpperBound="50" highLowerBound="90"/></report></coverage><testsuites><testsuite name="test"><directory>tests</directory></testsuite></testsuites>
</phpunit>

phpunit.xml可以参考phpunit官网进行配置.

如果没有安装bingher/think-test, 可以不用配置bootstrap

单元测试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/bicheng/84448.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

金融系统渗透测试

金融系统渗透测试是保障金融机构网络安全的核心环节&#xff0c;它的核心目标是通过模拟攻击手段主动发现系统漏洞&#xff0c;防范数据泄露、资金盗取等重大风险。 一、金融系统渗透测试的核心框架 合规性驱动 需严格遵循《网络安全法》《数据安全法》及金融行业监管要求&am…

高考志愿填报管理系统---开发介绍

高考志愿填报管理系统是一款专为教育机构、学校和教师设计的学生信息管理和志愿填报辅助平台。系统基于Django框架开发&#xff0c;采用现代化的Web技术&#xff0c;为教育工作者提供高效、安全、便捷的学生管理解决方案。 ## &#x1f4cb; 系统概述 ### &#x1f3af; 系统定…

PHP 项目中新增定时任务类型的详细步骤(以 CRMEB 为例)

1.首先需要在下面文件中增加定时任务类型 2.在app\services\system\crontab\CrontabRunServices类中增加第一步中与定时任务类型同名的方法&#xff0c;注意需要下划线转小驼峰 例如定时任务的类型为&#xff1a;order_tick,而在CrontabRunServices类中的方法名称为&#xff1…

Day27 函数专题2:装饰器

1.装饰器的思想&#xff1a;进一步复用 装饰器&#xff08;Decorator&#xff09;是 Python 中一种强大的编程工具&#xff0c;核心作用是在不修改原函数代码的前提下&#xff0c;为函数添加额外功能&#xff08;如日志记录、性能统计、权限校验等&#xff09;。它充分利用了 …

Qt进阶开发:动画框架的介绍和使用

文章目录 一、QPropertyAnimation 简介二、基本用法三、常用属性和方法四、支持的属性&#xff08;部分常用&#xff09;五、多个动画组合六、使用缓和曲线七、状态机框架 一、QPropertyAnimation 简介 #include <QPropertyAnimation>QPropertyAnimation 可以让你在一段…

IP选择注意事项

IP选择注意事项 MTP、FTP、EFUSE、EMEMORY选择时&#xff0c;需要考虑以下参数&#xff0c;然后确定后选择IP。 容量工作电压范围温度范围擦除、烧写速度/耗时读取所有bit的时间待机功耗擦写、烧写功耗面积所需要的mask layer

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…

filebeat原理架构

Filebeat 是基于 Golang 开发的轻量级日志采集 Agent&#xff0c;其核心架构设计围绕高效、可靠地采集与转发日志数据&#xff0c;主要组件和工作流程如下&#xff1a; ‌一、核心架构组件‌ ‌输入 (Inputs)‌ 负责监控指定的日志源&#xff08;如文件路径、日志文件&#x…

Air8000开发板新资料开放!多功能+高扩展特性全面解锁

Air8000开发板最新技术资料正式向开发者开放。这个开发板集多功能与高扩展性于一身&#xff0c;将为物联网、嵌入式系统等领域的创新项目提供更强大的技术支持&#xff0c;助力开发者快速实现创意落地。 工程师朋友们&#xff0c;Air8000开发板“多功能集成高扩展性”&#xff…

如何迁移Cordova应用到HarmonyOS 5 以及迁移时常见的问题?

以下是 Cordova 应用迁移至 HarmonyOS 5 的完整方案及常见问题解决方案&#xff0c;结合最新技术实践整理&#xff1a; 一、迁移流程 1. ‌方案选择‌ ‌方案‌‌适用场景‌‌操作复杂度‌‌Android 兼容层方案‌简单应用快速上线低&#xff08;无需修改代码&#xff09;‌原…

板凳-------Mysql cookbook学习 (十--4)

6.3 设置客户端时区 --客户端位于不同时区需要注意&#xff0c;如果位于同一时区则不需要关心 mysql> drop table if exists t; Query OK, 0 rows affected (0.06 sec)mysql> create table t (ts timestamp); Query OK, 0 rows affected (0.05 sec)mysql> insert int…

如何根据excel表生成sql的insert脚本

根据excel自带的vba宏进行操作 首先altF11 点击插入~模块 录取执行语句 Sub GenerateSQL()Dim lastRow As IntegerlastRow Cells(Rows.Count, 1).End(xlUp).RowFor i 2 To lastRow 假设第一行是标题Cells(i, "S").Value "INSERT INTO table_name (ID, RE…

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook&#xff0c;用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途&#xff0c;下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…

开疆智能ModbusTCP转Canopen网关连接AB PLC与台达伺服通讯案例

本案例是罗克韦尔PLC通过开疆智能ModbusTCP转Canopen网关连接台达A2伺服的配置案例。 配置方法&#xff1a; 首先打开PLC配置软件“Studio5000”并新建项目导入通讯文件 对功能块进行设置 填写本地IP地址以及服务区IP地址以及寄存器 填写寄存器地址数量及使能 确认无误后将配置…

用 LoRA 对 Qwen2.5-VL 模型进行SFT - LoRA微调流程

用 LoRA 对 Qwen2.5-VL 模型进行SFT - LoRA微调流程 flyfish ┌──────────────────────────────────────────────────────────────────────────┐ │ 环境准备与启动 …

熵最小化Entropy Minimization (二): 案例实施

前面介绍了熵最小化、常用的权重函数汇总、半监督学习&#xff1a;低密度分离假设 (Low-Density Separation Assumption)、标签平滑、信息最大化等相关的知识点&#xff0c;本文采用一个MNIST10分类的数据集来进一步体会它们的效果。 案例实施 对比方法 纯监督学习方法&…

联邦学习聚合参数操作详解

联邦学习中常见的模型聚合操作&#xff0c;具体用于对来自多个客户端的模型更新进行聚合&#xff0c;以得到全局模型。在联邦学习框架下&#xff0c;多个客户端在本地训练各自的模型后&#xff0c;会将模型更新&#xff08;通常是模型的权重&#xff09;发送到中央服务器&#…

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1)&#xff1a;从基础到实战的深度解析-CSDN博客&#xff0c;但实际面试中&#xff0c;企业更关注候选人对复杂场景的应对能力&#xff08;如多设备并发扫描、低功耗与高发现率的平衡&#xff09;和前沿技术的…

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…

机房断电后 etcd 启动失败的排查与快速恢复实录

目录 机房断电后 etcd 启动失败的排查与快速恢复实录 背景与问题起因 报错分析 解决方案&#xff1a;删除 member 数据重新初始化 步骤 1&#xff1a;停止 etcd 容器或服务 步骤 2&#xff1a;删除 member 目录 步骤 3&#xff1a;重启 etcd 服务 附加提醒 总结与后续…