首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Xdebug:“启动当前打开的脚本”有效,但“侦听Xdebug”不起作用。使用VSCode、PHP8.0.11和WinNMP ():

Xdebug:“启动当前打开的脚本”有效,但“侦听Xdebug”不起作用。使用VSCode、PHP8.0.11和WinNMP ():
EN

Stack Overflow用户
提问于 2022-07-16 21:48:52
回答 3查看 379关注 0票数 0

使用VSCode时,当我在PHP文件中放置一个断点时,启动调试器并单击Run和Debug按钮,调试将按照预期的方式工作。执行在断点上停止,信息显示在左侧栏中。但是,当我使用"Listen“下拉(在创建了下面描述的launch.json文件之后)启动相同的进程,然后在我的浏览器中重新加载存在问题的PHP文件时,断点就会被忽略并加载网页。在过去,当此操作正常时,重新加载页面将触发调试,但在我重新安装VSCode和WinNMP之后,一些事情发生了变化,我不知道发生了什么。

我使用https://xdebug.org/wizard安装了Xdebug,并遵循了以下说明:

代码语言:javascript
代码运行次数:0
运行
复制
Download php_xdebug-3.1.5-8.0-vs16-nts-x86_64.dll
Move the downloaded file to ext, and rename it to php_xdebug.dll
Update D:\winnmp\conf\php.ini and add the line:
zend_extension = xdebug
Restart the webserver

我的Xdebug PHP.INI是:

代码语言:javascript
代码运行次数:0
运行
复制
  zend_extension = xdebug
  xdebug.mode = debug

我添加了xdebug.mode行,因为这是Xdebug指示的步骤调试。

我删除了一个先前的launch.json文件,对于launch.json,我点击了Run >> prior,这生成了这个launch.json;

代码语言:javascript
代码运行次数:0
运行
复制
{
    "configurations": [
    {
        "name": "Listen for Xdebug",
        "type": "php",
        "request": "launch",
        "port": 9003
    }
    ]
}

我使用Firefox Developer作为我的浏览器。刷新我在VSCode中打开的带有断点设置的网页对VSCode中的调试没有任何影响。我尝试在CMD窗口中启动Firefox:

代码语言:javascript
代码运行次数:0
运行
复制
"C:\Program Files\Firefox Developer Edition\firefox.exe" -start-debugger-server

也没有什么区别。我将launch.json更改为:

代码语言:javascript
代码运行次数:0
运行
复制
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Attach to Firefox",
            "type": "firefox",
            "request": "attach"
        }
    ]
}

调试不受影响。

我已经安装了几个火狐扩展,依次是Xdebug、Xdebug和Zend-调试器工具栏。他们都没有任何效果。真正起作用的是安装了VSCode扩展,即火狐的调试器。在扩展的选项中,我将端口设置为9003,并输入了firefox.exe的绝对路径。完成此操作后,当我启动调试器时,Firefox请求获得连接到远程调试器的权限。我单击“是”,然后断点变成一个打开的灰色循环,如果刷新网页,则不会进行调试。

这是xdebug_info()中的打印输出。调试器=非活动似乎是错误的,但如果它实际上是错误的,我不知道该如何处理它。

代码语言:javascript
代码运行次数:0
运行
复制
Version     3.1.5
Support Xdebug on Patreon, GitHub, or as a business
Enabled Features
(through 'xdebug.mode' setting)
Feature Enabled/Disabled    Docs
Development Helpers ✘ disabled  
Coverage    ✘ disabled  
GC Stats    ✘ disabled  
Profiler    ✘ disabled  
Step Debugger   ✔ enabled   
Tracing ✘ disabled  
Optional Features
Compressed File Support     yes (gzip)
Clock Source    GetSystemTimePreciseAsFileTime
Diagnostic Log
No messages
Step Debugging  Docs
Debugger    Not Active  
PHP
Build Configuration
Version (Run Time)  8.0.11
Version (Compile Time)  8.0.19
Debug Build     no
Thread Safety   disabled
Settings
Configuration File (php.ini) Path   no value
Loaded Configuration File   D:\winnmp\conf\php.ini
Scan this dir for additional .ini files     (none)
Additional .ini files parsed    (none)
Directive   Local Value Master Value    Docs
xdebug.mode debug   debug   
xdebug.start_with_request   default default 
xdebug.start_upon_error default default 
xdebug.output_dir   C:\Windows\Temp C:\Windows\Temp 
xdebug.use_compression  1   1   
xdebug.trigger_value    no value    no value    
xdebug.file_link_format no value    no value    
xdebug.filename_format  no value    no value    
xdebug.log  no value    no value    
xdebug.log_level    7   7   
xdebug.var_display_max_children 128 128 
xdebug.var_display_max_data 512 512 
xdebug.var_display_max_depth    3   3   
xdebug.max_nesting_level    256 256 
xdebug.cli_color    0   0   
xdebug.force_display_errors Off Off 
xdebug.force_error_reporting    0   0   
xdebug.halt_level   0   0   
xdebug.max_stack_frames -1  -1  
xdebug.show_error_trace Off Off 
xdebug.show_exception_trace Off Off 
xdebug.show_local_vars  Off Off 
xdebug.dump.COOKIE  no value    no value    
xdebug.dump.ENV no value    no value    
xdebug.dump.FILES   no value    no value    
xdebug.dump.GET no value    no value    
xdebug.dump.POST    no value    no value    
xdebug.dump.REQUEST no value    no value    
xdebug.dump.SERVER  no value    no value    
xdebug.dump.SESSION no value    no value    
xdebug.dump_globals On  On  
xdebug.dump_once    On  On  
xdebug.dump_undefined   Off Off 
xdebug.profiler_output_name cachegrind.out.%p   cachegrind.out.%p   
xdebug.profiler_append  Off Off 
xdebug.cloud_id no value    no value    
xdebug.client_host  localhost   localhost   
xdebug.client_port  9003    9003    
xdebug.discover_client_host Off Off 
xdebug.client_discovery_header  no value    no value    
xdebug.idekey   no value    no value    
xdebug.connect_timeout_ms   200 200 
xdebug.scream   Off Off 
xdebug.gc_stats_output_name gcstats.%p  gcstats.%p  
xdebug.trace_output_name    trace.%c    trace.%c    
xdebug.trace_format 0   0   
xdebug.trace_options    0   0   
xdebug.collect_assignments  Off Off 
xdebug.collect_return   Off Off 
EN

回答 3

Stack Overflow用户

发布于 2022-07-17 20:44:48

解决了!(在某种程度上)。我不知道为什么我的XDebug配置不能使用PHP8,但是我能够使用PHP7.4检索配置(感谢我最近安装的云版本备份软件)。下面是一些设置,通过在任何浏览器中刷新页面,在VSCode中为我提供了光荣的调试步骤。我将进行实验,看看是否可以将其应用于PHP 8,但目前一切都很好。我用文件比较软件检查了我拥有的php_xdebug.dll,并验证了它是这里列出的那个。

XDebug DLL:

代码语言:javascript
代码运行次数:0
运行
复制
php_xdebug-3.1.5-7.4-vc15-nts-x86_64.dll

Php.ini:

代码语言:javascript
代码运行次数:0
运行
复制
zend_extension = "php_xdebug.dll"
xdebug.mode = debug
xdebug.discover_client_host = 1
xdebug.start_with_request = yes
xdebug.client_port = 9000

Launch.json:

代码语言:javascript
代码运行次数:0
运行
复制
    "version": "0.2.0",
    "configurations": [

        {
            "name": "Listen for Xdebug",
            "type": "php",
            "request": "launch",
            "port": 9000
        }
       
    ]
}

已安装与代码扩展(如果重要的话):

代码语言:javascript
代码运行次数:0
运行
复制
Bookmarks, Live SAAS Compiler, Local History, PHP Debug, Prettier-Code formatter, Rainbow Brackets, Trailing Spaces.

Settings.json (如果重要的话):

代码语言:javascript
代码运行次数:0
运行
复制
{
}
票数 1
EN

Stack Overflow用户

发布于 2022-07-17 21:11:00

上面提到的php.ini和launch.json设置确实与PHP8 (8.0.11)和XDebug.dll一起工作:

代码语言:javascript
代码运行次数:0
运行
复制
php_xdebug-3.1.5-8.0-vs16-nts-x86_64.dll

请注意,https://xdebug.org/wizard中提供的说明如下:

代码语言:javascript
代码运行次数:0
运行
复制
Update D:\winnmp\conf\php.ini to have the line:
zend_extension = xdebug

这与我的安装(WinNMP-- https://winnmp.wtriple.com/)中获得成功所需的行有很大的不同。

票数 0
EN

Stack Overflow用户

发布于 2022-10-06 19:09:23

在我的情况下,什么也不起作用,因为我必须更改默认9003中的端口。所以,首先我在launch.json文件中更改我的端口

代码语言:javascript
代码运行次数:0
运行
复制
"version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for Xdebug",
            "type": "php",
            "request": "launch",
            "port": 11011
        },

在php.ini文件中

代码语言:javascript
代码运行次数:0
运行
复制
zend_extension = xdebug //Remember this is your file name which you downloaded
xdebug.mode = debug,develop
xdebug.discover_client_host = yes
xdebug.log_level = 0
xdebug.log = "C:\WINDOWS\temp\log.txt"
xdebug.client_port = 11011
xdebug.start_with_request = yes
xdebug.idekey = VSCODE

不要忘记重新启动服务器,并通过phpinfo()在浏览器中验证所有这些配置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73007861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档