当前位置: 首页 > 知识库问答 >
问题:

使用Docker和WSL2在VSCode中调试PHP时的问题

轩辕弘雅
2023-03-14

我在Windows中使用VSCode Docker已经有几年了,我成功地创建了一个完全工作的开发环境,没有任何问题。

最近我用WSL2建立了一个新的开发环境。使用带有WSL2容器的Docker Windows和远程连接到WSL的Windows上的VSCode,将我的所有项目、库、CLI等移动到WSL中。一切都很顺利,我喜欢我能把一切分开。

但最近我遇到了一个我无法解决的问题,我失去了调试PHP文件的能力。我使用VSCode远程WSL扩展在WSL内部处理我的项目,但当我尝试调试时,什么也没发生。

我在我的VSCode中为我使用的每个开发环境(Windows、MacOS和WSL)设置了树调试设置。除了WSL之外,所有工作都可以。当我尝试使用WSL进行调试时,实际上什么都不会发生,没有输出错误,没有调试控制台信息,什么都没有...

以下是我的VSCode调试设置:

{
    "version": "0.2.0",
    "configurations": [{
            "name": "Listen for XDebug Win10",
            "type": "php",
            "request": "launch",
            "port": 9000,
            "log": true,
            "externalConsole": false,
            "pathMappings": {
                "/var/www/project-a/api": "\\\\wsl$\\Ubuntu\\home\\ubuntu\\PROJECTS\\project-a\\api",
            },
            "ignore": [
                "**/vendor/**/*.php"
            ]
        },
        {
            "name": "Listen for XDebug MacOS",
            "type": "php",
            "request": "launch",
            "port": 9000,
            "log": true,
            "externalConsole": false,
            "pathMappings": {
                "/var/www/project-a/api": "/Users/ricky/PROJECTS/project-a/api",
            },
            "ignore": [
                "**/vendor/**/*.php"
            ]
        },
        {
            "name": "Listen for XDebug WSL",
            "type": "php",
            "request": "launch",
            "port": 9000,
            "log": true,
            "externalConsole": false,
            "pathMappings": {
                "/var/www/project-a/api": "/home/ubuntu/PROJECTS/project-a/api",
            },
            "ignore": [
                "**/vendor/**/*.php"
            ]
        },
    ]
}

我做错了什么?有什么办法解决这个问题吗?

###更新:我把原来正确的答案改成了新的。虽然@romain prevost的解决方案奏效了,但我认为@dark的方法要简单得多:)

共有1个答案

寇涵容
2023-03-14

别管其他答案了。它们很有效,但在我看来太复杂了。

问题是,您无法连接到xdebug。

解决方案是告诉xdebug将远程_主机设置为主机。码头工人。内部。本地主机可以使用那里的所有内容。现在,您只需通过hostname在Visual Studio代码中收听localhost

等等。现在,您可以在phpunit测试或命令行脚本中调试浏览器调用的东西。

launch.json

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9000,
            "pathMappings": {
                "/var/www/html/": "${workspaceRoot}"
            },
            "hostname": "localhost"
        }
    ]
}

php。伊尼

[XDebug]
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_host = host.docker.internal
xdebug.remote_port = 9000

launch.json

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9003,
            "pathMappings": {
                "/var/www/html/": "${workspaceRoot}"
            },
            "hostname": "localhost"
        }
    ]
}

php。伊尼

[XDebug]
xdebug.mode = develop
xdebug.start_with_request = yes
xdebug.client_host = host.docker.internal
xdebug.client_port = 9003
 类似资料:
  • 问题内容: 我正在尝试使用VSCode调试在Docker上运行的PHP应用程序,但没有成功。 过去,我可以使用运行WAMP Server的VSCode轻松调试PHP应用程序,但是由于我开始使用Docker,所以无法调试。在网上搜索了几本教程,在StackOverflow上检查了一些线程,但是我仍然无法正常工作。 Dockerfile: xdebug.ini docker-compose.yml V

  • 我最近在VSCODE中调试时遇到了一个很大的问题。我已经试着通过搜索网站和重新安装我的一些扩展来修复它。 它不会在调试控制台中显示结果,而是将以下输出写入终端:

  • 本指南将介绍如何使用 VSCode debugging 为您自己的 Electron 项目和 native Electron 代码库(Electron codebase)调试。 调试您的 Electron 应用 主进程 1. Open an Electron project in VSCode. $ git clone git@github.com:electron/electron-quick-

  • 我只是尝试WSL 2与Docker的Windows和我有一个问题与安装卷: 容器构建和启动良好,我使用docker exec很好地访问它,但是容器中的文件夹没有绑定到我的笔记本电脑文件夹。但是,正确的路径实际上正确地安装在运行的容器上: (这里我在主机上进行pwd,以确定它是否与安装在容器上的内容完全匹配) 这是portainer的屏幕,告诉我容器中安装了什么路径,所有内容都匹配。 我在主机上的应

  • 使用的是 WNMP 的集成环境,服务启用后,如何用 vscode 对 php 代码进行断点调试?之前是使用 PHPStorm 进行断点调试的,想知道 vscode 能否实现类似的断点调试功能

  • 我需要在VsCode上调试我的反应原生应用程序,我是新的反应原生开发...:)我搜索并遵循不同的方法,但没有运气...:(首先,我遵循此方法https://medium.com/@Tunvirrahmantushs/react-nate-debug-with-vscode-in-imple-steps-bf39b6331e67并遵循此方法https://www.youtube.com/watch?