Visual Studio Code 中的 PHP Xdebug - 如何设置和允许断点

问题描述 投票:0回答:1

我已经阅读了大部分关于为 VS Code 设置 PHP Xdebug 的帖子,但没有找到适合我的解决方案。 我已经在一台新笔记本电脑上安装了 VS Code(这是相关的,因为我知道还安装了其他内容,并且没有多个 PHP 实例 - 但似乎有!)

我已在 Windows 11 PC 上安装了 XAMPP,其中包括 PHP 8.2.12。

php -v
显示:

PHP 8.2.12 (cli) (built: Oct 24 2023 21:15:15) (ZTS Visual C++ 2019 x64)
Copyright (c) The PHP Group
Zend Engine v4.2.12, Copyright (c) Zend Technologies
    with Xdebug v3.3.2, Copyright (c) 2002-2024, by Derick Rethans

php.ini
说:

zend_extension = c:\xampp\php\ext\php_xdebug.dll
xdebug.start_with_request = yes
xdebug.client_port = 9900
xdebug.client_host = 127.0.0.1
xdebug.default_enable=1
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_log="C:\xampp\apache\logs\xdebug.log"

VS Code 中的 json 设置为:

{
    "workbench.colorTheme": "Visual Studio Light",
    "debug.allowBreakpointsEverywhere": true,
    "php.executables": { "v8.2": "//xampp//php//php.exe" },
    "launch": {      
        "configurations": [  {
            "name": "Listen for Xdebug",
            "type": "php",
            "request": "launch",
            "port": 9900,
            "pathMappings": {
                "c:/xampp/php/ext": "${workspaceFolder}"
            }
        }
    ]]
    }
}

根据我读过的所有帖子,应该可以做到这一点,但是当尝试调试简单的 PHP 时,我收到此错误:

Failed loading C:\php\ext\php_xdebug-2.6.1-7.2-vc15-nts-x86_64.dll

现在我不是专家,但这似乎是在说它试图运行 PHP 7.2 并且想要 Xdebug 2.6.1。非线程安全的 xdebug.dll。

但是我在 PC 上找不到 php.exe 的其他实例 - 它在 VS Code 中的哪个位置寻找

c:\php\ext\
一个不存在的文件夹。我在 VS Code 中找不到存在此类设置的位置,也找不到如何告诉 VS Code 在正确的文件夹中查找(在本例中为
c:\xampp\php\ext

FWIW 虽然我正在使用 RobertLu 的 PHP 调试扩展,但我已经尝试了所有其他可用的扩展。不久前,我在以前的笔记本电脑上使用 Felix Beckers PHP 调试扩展确实取得了一些成功,但它不再出现在 VS Code 的可用扩展列表中。

任何意见或建议,感激不尽。

php visual-studio-code xdebug breakpoints
1个回答
0
投票

这是我通过尝试错误(更多的是绝望的分散枪方法)发现的部分答案,有趣的是确保 php.ini 中没有 xdebug v2.6 指令对 VSCode 错误没有影响。

Failed loading C:\php\ext\php_xdebug-2.6.1-7.2-vc15-nts-x86_64.dll
我复制了在网上找到的许多 launch.json 示例,确保 php 的端口和路径与 php.ini 匹配。 这个 launch.json 版本似乎消除了误导性的 php7.2 错误。 (我没有得到 php7.2 任何地方)我猜测如果 php.exe 的路径(也需要在 settings.json 中设置)是错误的,那么 VSCode 对您正在使用哪个 PHP 版本有一些后备假设

            "type": "php",
            "request": "launch",
            "runtimeExecutable": "C:/pathtophpexe/php.exe",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 9003
        }

此后我开始收到“端口”错误

Invalid "xdebug.client_port" setting. Invalid quantity "${port}": no valid leading digits 

后一个问题是通过替换 php.ini 行意外解决的

xdebug.client_host = 127.0.0.1

xdebug.client_host = localhost

xdebug.log 说它无法连接到端口,因此当然不会单步执行

无论如何,在 php.ini 中用 localhost 替换 127.0.0.1 已经解决了问题。

因此,虽然主要目标已经实现,即让调试工作,但我不知道 php7.2 错误来自哪里(它似乎与 xdebug 版本 2.6 指令无关)
也不知道为什么指定 127.0.0.1 不起作用,而 localhost 却起作用。

如果您能阐明并想发表评论,请阅读并理解问题的本质:“为什么 VSCode 在未安装 PHP v7.2 和 xdebug 2.6 的情况下会报告和错误?”其次,“为什么指定 localhost 成功,而 127.0.0.1 不成功?”

哦,tx PaulT,您建议的那个网站是我在尝试各种 launch.json 示例的分散枪方法中遇到的一个网站。有趣的是,它说这是“必要的;”包括行

xdebug.idekey=VSCODE
我发现情况并非如此(无论它是否在 php.ini 中,但我只进行简单的 cli 调试 - 在任何情况下,默认值是 vsc,它可以在这里找到

in VSCode under File > Preference > Settings > Extensions > PHP Debug > Ide Key.

很抱歉这不是完整的解释,但它可能对其他人有帮助 干杯

© www.soinside.com 2019 - 2024. All rights reserved.