Skip to main content

moregeek program

vscode调试php(解决vscode远程调试无效的问题)_crmeb中邦科技的博客-多极客编程

问题说明(apache可以,nginx依旧不行):

vscode调试单个文件正常,就是无法远程调试(比如通过浏览器运行时调试),折腾了一整天,最后发现是php.ini 中少了两项配置所导致

xdebug.remote_enable=1

这个开关控制Xdebug是否应该尝试联系一个正在监听主机和端口的调试客户端,这些主机和端口是用xdebug.remote_host和xdebug.remote_port设置的。如果不能建立连接,脚本将继续进行,就像这个设置为0一样。

xdebug.remote_autostart=1

通常,您需要使用特定的 HTTP GET/POST 变量来启动远程调试,当此设置设置为 1 时,Xdebug 将始终尝试启动远程调试会话并尝试连接到客户端,即使 GET/POST/COOKIE 变量不存在。

vscode配置xdebug步骤

下载xdebug

*[xdebug]: 我用的版本为2.9.4

1. 查看PHP版本 

vscode调试php(解决vscode远程调试无效的问题)_php

2. 查找对应的xdebug 

vscode调试php(解决vscode远程调试无效的问题)_远程调试_02

3. 放到php更目录下的ext目录下 

vscode调试php(解决vscode远程调试无效的问题)_vscode_03

4. 或者通过phpstudy配置xdebug 

vscode调试php(解决vscode远程调试无效的问题)_商城系统_04


注意:phpstudy配置完成后查看php.ini,查找xdebug.remote_autostart =1,如果没有,就在xdebug模块追加,修改xdebug.remote_enable 等于 1 或者 On,修改debug.trace_output_dir和 xdebug.profiler_output_dir的路径

5. 配置php.ini

1. 配置php.ini文件

1.[XDebug]
2. zend_extension=E:/phpstudy_pro/Extensions/php/php7.4.3nts/ext/php_xdebug.dll ;xdebug的路径
3. xdebug.collect_params=1
4. xdebug.collect_return=1 ;此设置默认为 0,控制 Xdebug 是否应将函数调用的返回值写入跟踪文件。
5. xdebug.auto_trace=On ;当这个设置为开时,函数调用的追踪将在脚本运行之前被启用
6. xdebug.trace_output_dir=E:/phpstudy_pro/Extensions/php/log/php/trace
7. xdebug.profiler_enable=On
8. xdebug.profiler_output_dir=E:/phpstudy_pro/Extensions/php/log/profiler
9. ;远程调试配置
10. xdebug.remote_enable=1 ;开启远程调试功能
11. xdebug.remote_host=localhost
12. xdebug.remote_port=9001 ;默认端口9000 和 php冲突
13. xdebug.remote_handler=dbgp
14. xdebug.remote_autostart =1

2. 配置vscode

3. vscode 下载PHP Debug,修改配置信息

1.{
2. // 使用 IntelliSense 了解相关属性。
3. // 悬停以查看现有属性的描述。
4. // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
5. // 修改端口号和php.ini里一直
6. "version": "0.2.0",
7. "configurations": [
8. {
9. "name": "Listen for Xdebug",
10. "type": "php",
11. "request": "launch",
12. "port": 9001
13. },
14. {
15. "name": "Launch currently open script",
16. "type": "php",
17. "request": "launch",
18. "program": "${file}",
19. "cwd": "${fileDirname}",
20. "port": 0,
21. "runtimeArgs": [
22. "-dxdebug.start_with_request=yes"
23. ],
24. "env": {
25. "XDEBUG_MODE": "debug,develop",
26. "XDEBUG_CONFIG": "client_port=${port}"
27. }
28. },
29. {
30. "name": "Launch Built-in web server",
31. "type": "php",
32. "request": "launch",
33. "runtimeArgs": [
34. "-dxdebug.mode=debug",
35. "-dxdebug.start_with_request=yes",
36. "-S",
37. "localhost:0"
38. ],
39. "program": "",
40. "cwd": "${workspaceRoot}",
41. "port": 9001,
42. "serverReadyAction": {
43. "pattern": "Development Server \\(http://localhost:([0-9]+)\\) started",
44. "uriFormat": "http://localhost:%s",
45. "action": "openExternally"
46. }
47. }
48. ]
49.}

4. 测试vscode调试(直接上图)

1. 选择调试模式为Listen for Xdebug,打好断点 

vscode调试php(解决vscode远程调试无效的问题)_php_05

2. 打开浏览器,进入编写好的程序 

vscode调试php(解决vscode远程调试无效的问题)_vscode_06

3. 打开调试,然后刷新页面,就可以进入断点 

vscode调试php(解决vscode远程调试无效的问题)_远程调试_07

问题一:

倒腾了一整天,nginx使用xdebug可以连接,就是不能进入断点调试,下面是xdebug返回的日志信息。

1.[11592] Log opened at 2021-08-14 09:59:12
2.[11592] I: Connecting to configured address/port: 127.0.0.1:9001.
3.[11592] I: Connected to client. :-)
4.[11592] -> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file:///E:/phpstudy_pro/WWW/classOverNow/public/index.php" language="PHP" xdebug:language_version="7.4.0" protocol_version="1.0" appid="11592" idekey="Administrator"><engine version="2.9.4"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2020 by Derick Rethans]]></copyright></init>
5.
6.[11592] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" status="stopping" reason="ok"></response>
7.
8.[11592] Log closed at 2021-08-14 09:59:16

解决办法:

无意间发现phpstudy的fastcgi的默认端口号为9001,和我设置的xdebug的端口号重复了,反复了好几遍,apache能进去,nginx进不去。到最后发现是是个乌龙,所以再次建议,这样的端口号尽可能的整大一点。

问题二:(日志报以下错误)

Time-out connecting to client (Waited: 200 ms)

解决办法:

连接超时: 先去看下端口号,vscode每个项目下面都有个.vscode文件夹,launch.json这个文件就是PHP Debug的配置文件,也就是每个项目可以单独配置PHP Debug

以上就是CRMEB讲解的关于解决vscode远程调试无效的问题的所有内容名,有不懂的地方可以在下方留言,互相讨论学习!

©著作权归作者所有:来自51CTO博客作者CRMEB众邦科技的原创作品,请联系作者获取转载授权,否则将追究法律责任

自定义pc页面顶部分类_crmeb中邦科技的博客-多极客编程

1、以CRMEB Pro版为例增加sql语句,组合数据表:eb_system_group(表前缀有更改,请手动变更)INSERT INTO `eb_system_group` (`id`, `cate_id`, `name`, `info`, `config_name`, `fields`) VALUES (NULL, 0, 'PC页面链接', 'PC页面链接', 'pc_link', '[{\"

thinkphp6实现定时任务功能_crmeb中邦科技的博客-多极客编程

本文主要介绍命令启动定时任务的功能,按照CRMEB标准版的程序为大家详细的进行实现过程的介绍一、首先创建安装Worker,执行composer require topthink/think-worker安装二、在config/console.php中定义指令 'timer' => \crmeb\command\Timer::class三、对应图1中的路径创建自定义指令crmeb\comman

教你2种常用的电商高并发处理解决方案_crmeb中邦科技的博客-多极客编程

网站架构师面临的最大挑战之一就是并发。自Web服务开始以来,并发水平一直在不断增长,一个主流网站同时服务十万甚至数百万用户,这并不罕见。就目前应用广泛的电商系统来说,各种营销场景的增加,让电商系统高并发也成为一种必然。为此,本文将给大家带来2种高并发解决方案,希望能为电商系统实现高并发提供一些灵感。1、多级缓存2、Nginx 限流本文我们将以CRMEB商城为例,了解电商中常见的2种高并发方案一、多

promise异步请求变成同步_crmeb中邦科技的博客-多极客编程

最近在写CRMEB OA管理系统的客户列表模块有个需求,保存客户并继续添加合同和保存合同并继续添加付款记录,这个页面跳转简单,但是比较难的是调接口后拿着接口返回的数据要同步到下一个页面,这一部分当时写的时候遇到的问题主要是:保存成功后页面已经跳转到下一个,但是保存接口返的客户id在下一个页面一直打印不出来,打印值为undefined。最后想了一下就是异步和同步的问题。使用Promise完美解决。1

php中几种常见的开发模式-多极客编程

设计模式六大原则 开放封闭原则:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。 里氏替换原则:所有引用基类的地方必须能透明地使用其子类的对象. 依赖倒置原则:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。 单一职责原则:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。 接口隔离原则:客户端不应该依赖它不需要的接

【web 开发基础】php 开发基础快速入门 (2)-php的程序开发-多极客编程

前言PHP ( Hypertext Preprocessor,超文本预处理器)是一种被广泛应用开放源代码、多用途、运行在服务器端的脚本语言。在上一篇文章《​​【web 开发基础】php 开发基础快速入门 (1)-PHP 介绍及开发环境快速安装和基本使用介绍​​》中,我们介绍了PHP的优势和PHP集成开发环境的简单搭建以及浅尝了一下PHP代码的编写,写了一个hello world的程序。本文接着继续

#yyds干货盘点# 前端歌谣的刷题之路-第一百四十七题-三列布局-浮动_前端歌谣的博客-多极客编程

 前言我是歌谣 我有个兄弟 巅峰的时候排名c站总榜19 叫前端小歌谣 曾经我花了三年的时间创作了他 现在我要用五年的时间超越他 今天又是接近兄弟的一天人生难免坎坷 大不了从头再来 歌谣的意志是永恒的 放弃很容易 但是坚持一定很酷 本题目源自于牛客网 微信公众号前端小歌谣题目使用Grid网格布局实现双列布局的要点在于列数为2,且首列的宽度根据需要自行设置,第二列使用片段"fr"属性进行自适应即可。行

#yyds干货盘点# 前端歌谣的刷题之路-第一百四十八题-三列布局-绝对定位_前端歌谣的博客-多极客编程

 前言我是歌谣 我有个兄弟 巅峰的时候排名c站总榜19 叫前端小歌谣 曾经我花了三年的时间创作了他 现在我要用五年的时间超越他 今天又是接近兄弟的一天人生难免坎坷 大不了从头再来 歌谣的意志是永恒的 放弃很容易 但是坚持一定很酷 本题目源自于牛客网 微信公众号前端小歌谣题目使用绝对定位实现三列布局,实际上是和之前使用绝对定位实现双列布局同一个原理。主要思路是,两边通过绝对定位定位到父盒子的左、右边

?利用vite插件助力证书安装_xiaoxintongxue的博客-多极客编程

大家好,我是[小鑫同学]。一位长期从事前端开发的编程爱好者,我信奉编程最重要的是分享。请跟随小鑫同学的步伐,一起带你畅游不一样的前端世界~ 1. 前言 在以前的一篇文章中讲述了在前端开发时通过配置自签名证书来完成必须使用HTTPS协议才能工作的功能。那么当你同时需要在手机端预览的时候,可能就要将公钥证书也安装到手机上了,但无论你通过什么方式将证书发送到手机中都不如我写的这个Vite插件使用着方

#yyds干货盘点# 前端歌谣的刷题之路-第一百五十三题-发布订阅者模式_前端歌谣的博客-多极客编程

 前言我是歌谣 我有个兄弟 巅峰的时候排名c站总榜19 叫前端小歌谣 曾经我花了三年的时间创作了他 现在我要用五年的时间超越他 今天又是接近兄弟的一天人生难免坎坷 大不了从头再来 歌谣的意志是永恒的 放弃很容易 但是坚持一定很酷 本题目源自于牛客网 微信公众号前端小歌谣题目 请补全JavaScript代码,完成"EventEmitter"类实现发布订阅模式。 注意: 1. 同一名称事件可能有多个不

#yyds干货盘点# 前端歌谣的刷题之路-第一百五十二题-双飞翼布局_前端歌谣的博客-多极客编程

 前言我是歌谣 我有个兄弟 巅峰的时候排名c站总榜19 叫前端小歌谣 曾经我花了三年的时间创作了他 现在我要用五年的时间超越他 今天又是接近兄弟的一天人生难免坎坷 大不了从头再来 歌谣的意志是永恒的 放弃很容易 但是坚持一定很酷 本题目源自于牛客网 微信公众号前端小歌谣题目 使用grid网格布局实现三列布局,和之前所讲的gird实现双列布局是同样的思想,只是把列数变为了3,高度依然不设置,通过容器

基于vue-ant实现图片上传_尔嵘的博客-多极客编程

引言:上传是将信息(网页、文字、图片、视频等)通过网页或者上传工具发布到远程服务器上的过程。如何使用Ant-design-vue中的 a-upload 上传组件进行图片或者视频的上传呢?正文:1.template中:<a-form-model-item label="图片" prop="sheetPicture"> <div style="display: flex; al