Visual Studio代码PHP调试不起作用

Gar*_*yK4 6 php debugging xampp

我已经安装了VS CodePHP调试器

我正在使用xampp。

我尝试以两种方式(侦听和启动)运行代码。

听着坐在那里,而Launch 在调试控制台中显示spawn php ENOENT

这是我的launch.json。

    {
    "version": "0.2.0",
    "configurations": [

        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9000
        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 9000
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Tar*_*ior 25

刚刚在 2021 年使用 xdebug (v3.x) 完成了它,有些步骤有所不同,所以我将引用更多详细信息:

在 PHP 上安装 xdebug 模块

  1. 运行一个 PHP 页面,调用“ phpinfo(); ”并复制输出内容(是的,您可以选择所有文本和Ctrl+ C)并粘贴到https://xdebug.org/wizard

  2. xdebug.org 网站会告诉您正确下载的 xdebug 模块版本(例如:php_xdebug-3.0.4-7.4-vc15-x86_64.dll”),还会告诉您如何安装它,哪个目录和参考包含在 PHP.ini 中。

  3. 启用 xdebug 设置以调试模式并在 PHP.ini 上启用远程步骤调试器,如我使用的以下示例

[XDebug]
xdebug.mode=debug
xdebug.remote_enable=on
xdebug.start_with_request=yes
zend_extension = C:\xampp\php\ext\php_xdebug-3.0.4-7.4-vc15-x86_64.dll
Run Code Online (Sandbox Code Playgroud)

您可能需要根据您的情况更改这些 xdebug 设置(例如使用另一个客户端端口),您可以看到运行“phpinfo()”的所有可能参数的列表。这个技巧将在您遇到问题时为您提供帮助,您还必须确保“单步调试器显示为已启用”,它还在与每个主题相关的右侧列上提供了链接。

phpinfo() 上显示的 Xdebug 设置

因此,在之前的设置中,您可以检查主机和端口是否符合您将在 VS Code 上使用的预期。

设置您的 Visual Studio 代码

  1. 使用扩展选项卡,搜索“PHP 调试”并安装它(值得一提的是,扩展页面上的详细信息也有它自己的教程)。 在此输入图像描述

  2. 在 VS Code 菜单“文件”->“首选项”->“设置”上,我为 PHP 可执行路径添加了标签: 在此输入图像描述

  3. 最后,在 VS Code 调试选项卡上,系统会要求您创建一个新的 launch.json 文件,只需单击它并选择 PHP。这里重要的一步是“ Listen for Xdebug ”项上的“configurations”部分,确保端口与之前 XDebug 上的 phpinfo() 报告中显示的端口相同。 在此输入图像描述

  4. 确保您的 VS Code 项目文件夹正确并使用“Lister for Xdebug”启动新的调试。 在此输入图像描述

如果出现错误或没有任何反应,请重点检查“phpinfo()”上显示的 XDebug 设置,以及“Listen for XDebug”部分中的“launch.json”,或者检查网络服务器 error.log 以获取可能的错误详细信息。

此致!


Elu*_*uny 12

刚刚完成:

  1. 我们拥有带Microsoft Visual Code的OS Windows,并且已经安装了“ PHP Debug ”模块https://marketplace.visualstudio.com/items?itemName=felixfbecker.php-debug#overview使它正常工作的步骤已在此处撰写,但是我ll再写:

  2. 安装XDebug。在线向导https://xdebug.org/wizard.php可以帮助您,只需在此处发布phpinfo()数据即可。保存在phpinfo.php中:

    <?php phpinfo(); ?>
    
    Run Code Online (Sandbox Code Playgroud)

然后在浏览器中打开localhost/phpinfo.php,将看到的所有内容(Ctrl+A然后Ctrl+C)复制到向导中。它显示您获得的信息和操作步骤: 在此处输入图片说明

  1. 打开说明php.ini中的内容总是有很多php.ini-apache文件夹中有一个php.ini,php中有php.ini和phpForApache.ini。但是phpinfo清楚地表明了哪个是真正使用的

    2.1。并与配置它xdebug.remote_enable = 1xdebug.remote_autostart = 1。我的工作示例:

    [XDebug]
    zend_extension = "c:\wamp64\bin\php\php7.1.9\ext\php_xdebug-2.6.0beta1-7.1-vc14-x86_64.dll"    
    xdebug.stopOnEntry = true
    xdebug.profiler_enable = off
    xdebug.profiler_enable_trigger = Off
    xdebug.profiler_output_name = cachegrind.out.%t.%p
    xdebug.profiler_output_dir ="c:/wamp64/tmp"
    xdebug.show_local_vars=0
    ;xdebug.profiler_output_name = "cachegrind.out.%t-%s"
    xdebug.remote_enable = 1
    xdebug.remote_autostart = 1
    xdebug.remote_handler = "dbgp"
    xdebug.remote_host = "127.0.0.1"
    xdebug.remote_log = "C:\wamp64\tmp\xdebug.txt"
    xdebug.remote_port = 9000
    xdebug.trace_output_dir = "C:\wamp64\tmp"
    xdebug.remote_cookie_expire_time = 36000
    
    Run Code Online (Sandbox Code Playgroud)
  2. 重新启动Apache2 Web服务器。

也:

出于某种原因,我首先让xdebug在Netbeans上进行测试,然后才xdebug.remote_autostart = 1在手册中找到使它也可以在VS Code中工作的选项。

如果不确定XDebug的安装,请检查phpinfo页面中的“ with Xdebug”字样,并检查logs/apache_errors.log“无法加载php_xdebug”(下载了错误的DDL)。然后与其他任何IDE一起检查。

好的问候!

  • 花了一整天的时间后,终于按照你的评论`xdebug.remote_autostart = 1` 让它工作了 (7认同)
  • 现在在 Ubuntu 上测试,只设置 `zend_extension`、`xdebug.remote_autostart` 和 `xdebug.remote_enable` 就足够了 (2认同)

Gad*_*ziu 9

对于今天寻找答案的任何人,对我来说,在php.ini[XDebug] 部分中帮助更改为:

xdebug.mode = debug
xdebug.start_with_request = yes
zend_extension = "C:\xampp\php\ext\php_xdebug.dll"
xdebug.stopOnEntry = true
xdebug.profiler_enable = off
xdebug.profiler_enable_trigger = Off
xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.output_dir ="c:\xampp\tmp"
xdebug.show_local_vars=0
xdebug.remote_handler = "dbgp"
xdebug.client_host = "127.0.0.1"
xdebug.log = "C:\xampp\tmp\xdebug.txt"
xdebug.client_port = 9000
xdebug.remote_cookie_expire_time = 36000
Run Code Online (Sandbox Code Playgroud)

我使用了@Eluny 帖子中的设置,但是在一些较新版本的 XDebug 中,属性名称发生了变化。在文档页面上,您可以找到有关更改的信息


Yas*_*NIK 8

您只需在php.ini文件中进行这些更改即可。
对于 Xdebug v3.xx :(请注意,此版本中的端口号已更改为 9003)。

[XDebug]
xdebug.mode = 调试
xdebug.start_with_request = yes

对于 Xdebug v2.xx:

[XDebug]
xdebug.remote_enable = 1 xdebug.remote_autostart = 1
xdebug.remote_port = 9000


小智 5

在您的lunch.json 文件中添加以下行:

"runtimeExecutable": "c:\\xampp\\php\\php.exe"

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9000
        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 9000,
            "runtimeExecutable": "C:\\Program Files\\PHP\\v7.3\\php.exe"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)


Dig*_*dia 2

您是否检查过以确保防火墙允许端口 9000 上的入站连接?我在我的一台开发机器上遇到了这个问题。虽然所有其他设置都正确,但我无法达到断点。一旦我在防火墙中添加了例外,它就开始工作了。

因此,如果这就是您的设置的问题,您有两种选择来解决它。

  1. 完全关闭防火墙,或者至少在您处理项目时暂时关闭防火墙。
  2. 为您的防火墙设置添加例外:
    • 转到 Windows 控制面板并输入“防火墙”。
    • 从左侧导航中选择“入站规则”,然后单击“新建规则”。
    • 选择“端口”,然后点击“下一步”。
    • 确保选择“特定本地端口”选项并键入“9000”作为端口号。
    • 选择“允许连接”,然后点击“下一步”。
    • 检查“域”、“私人”和“公共”,然后单击“下一步”。
    • 输入描述性名称,例如“XDebug Port”,然后单击“完成”。
    • 重新启动 Visual Studio Code,然后再次尝试调试。

假设您正确设置了配置的 Web 服务器部分,这应该允许您进行调试。

希望这可以帮助。