在VSCode上调试Laravel应用程序

dot*_*NET 1 php xdebug laravel visual-studio-code

有没有人成功配置VSCode来调试基于Laravel的网站?在阅读了无数文章和教程之后,我已经达到可以让VSCode“收听XDEBUG”的地步,但是我无法进行常规的 VS风格的调试,只能按F5来启动当前版本。在我最喜欢的浏览器中访问该网站,就像遇到完整的Visual Studio或Eclipse一样,当它遇到断点时,它会闯入VSCode。

我在机器上正确设置了以下内容:

  • VSCode 1.25.1
  • XAMPP 1.8
  • XDEBUG(已配置且正在运行)
  • VSCode的PHP调试扩展

我不确定我需要在哪种启动配置中使用launch.json。PHP Debug扩展附带的两个配置如下所示:

{
    "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)

第一种配置正常工作时(我可以在VSCode中以该模式启动调试,然后在浏览器中单独启动我的网站,并遇到断点),第二种配置失败。它告诉我无法找到Controller类(这是Laravel框架类)。用名称空间来限定类名也没有用。

我的猜测是,这与启动配置的设置有关。它尝试将活动脚本作为独立的单元启动,因此无法找到位于不同文件中的框架类的定义。我们必须以某种方式提供将网站作为单个应用程序启动的功能。

有人成功做到了,告诉我我在这里缺少什么吗?

dot*_*NET 6

终于成功了。这是其他人需要的东西。

  1. 确保已在Apache服务器上设置并运行XDEBUG。
  2. 为您喜欢的浏览器安装调试器扩展。扩展程序适用于Chrome,Edge和FireFox(可以从VSCode中搜索和安装)。
  3. 进行设置launch.json,使其并行启动两个配置。这是通过所谓的复合配置完成的。这是我启动PHP + XDEBUG和EDGE浏览器的工具:

    {
        "version": "0.2.0",
        "compounds": [
            {
                "name": "Launch & Debug",
                "configurations": [ "Launch Program", "Launch localhost" ]
            }
    ],
    "configurations": [
        {
            "type": "php",
            "request": "launch",
            "name": "Launch Program",
            "cwd": "${workspaceRoot}",
            "port": 9000
        },
        {
            "name": "Launch localhost",
                "type": "edge",
                "request": "launch",
                "url": "http://localhost/public",
                "webRoot": "${workspaceRoot}"
            }
        ]
    }
    
    Run Code Online (Sandbox Code Playgroud)
  4. 根据您的本地设置(例如站点地址,xdebug端口等)更新上述配置。
  5. 按F5,您的调试会话将开始。浏览器将自动启动,您将可以达到断点。