Xdebug:"Launch currently open script"有效,但"Listen for Xdebug"无效。使用 VSCode、PHP 8.0.11 和 WinNMP(nginx l



使用VSCode,当我在PHP文件中放置一个断点时,启动调试器并单击运行和调试按钮,调试工作按预期进行。执行在断点处停止,信息显示在左侧栏中。但是,当我使用"Listen for xdebug"启动相同的过程时;下拉(创建启动后)。json文件如下所述),然后在我的浏览器中重新加载PHP文件,断点被忽略,网页加载。在过去,当这个工作时,重新加载页面会触发调试,但在我重新安装VSCode和WinNMP后,有些东西发生了变化,我不知道是什么。

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

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:winnmpconfphp.ini and add the line:
zend_extension = xdebug
Restart the webserver

我的Xdebug PHP.INI是:

zend_extension = xdebug
xdebug.mode = debug

我添加了xdebug。模式行,因为这是Xdebug指示获得分步调试。

我删除了先前的启动。json文件在那里,并且为发布。json,点击Run>添加配置>PHP监听Xdebug,它生成了这个launch.json;

{
"configurations": [
{
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9003
}
]
}

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

"C:Program FilesFirefox Developer Editionfirefox.exe" -start-debugger-server

,无差异。我改变了发射方式。json:

{
"version": "0.2.0",
"configurations": [
{
"name": "Attach to Firefox",
"type": "firefox",
"request": "attach"
}
]
}

和调试不受影响。

我已经安装了几个Firefox扩展,依次是Xdebug-helper、Xdebug-ext和Zend-debugger Toolbar。没有一种方法有任何效果。安装VSCode扩展Debugger for Firefox确实有一些效果。在扩展的选项中,我将端口设置为9003,并输入firefox.exe的绝对路径。这样做之后,当我启动调试器时,Firefox会请求连接到远程调试器的权限。我点击是,但是断点变成了一个开放的灰色圆圈,而且,如果我刷新网页,调试不会发生。

下面是xdebug_info()的输出。调试器=不活动似乎是错误的,但我不知道该怎么做,如果它实际上是错误的。


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:winnmpconfphp.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:WindowsTemp C:WindowsTemp 🖹
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 🖹

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

XDebug DLL:

php_xdebug-3.1.5-7.4-vc15-nts-x86_64.dll

php . ini:

zend_extension = "php_xdebug.dll"
xdebug.mode = debug
xdebug.discover_client_host = 1
xdebug.start_with_request = yes
xdebug.client_port = 9000

Launch.json:


"version": "0.2.0",
"configurations": [
{
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9000
}

]
}

已安装的VS Code扩展(如果重要的话):

Bookmarks, Live SAAS Compiler, Local History, PHP Debug, Prettier-Code formatter, Rainbow Brackets, Trailing Spaces.

设置。Json(如果重要的话):

{
}

php.ini并启动。上面提到的的json设置起作用使用PHP 8(8.0.11)和XDebug.dll:

php_xdebug-3.1.5-8.0-vs16-nts-x86_64.dll

注意https://xdebug.org/wizard提供的指令说明:

Update D:winnmpconfphp.ini to have the line:
zend_extension = xdebug

这与我的安装(WinNMP—https://winnmp.wtriple.com/)中为了成功而需要的行完全不同。

在我的情况下没有任何工作,因为我必须从默认的9003更改端口。所以,首先我在启动时更改了端口。json文件

"version": "0.2.0",
"configurations": [
{
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 11011
},

php.ini文件

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:WINDOWStemplog.txt"
xdebug.client_port = 11011
xdebug.start_with_request = yes
xdebug.idekey = VSCODE

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

相关内容

  • 没有找到相关文章

最新更新