Php 在VSCode上调试Laravel应用程序

Php 在VSCode上调试Laravel应用程序,php,laravel,visual-studio-code,xdebug,Php,Laravel,Visual Studio Code,Xdebug,有人成功地配置了VSCode来调试基于Laravel的网站吗?在阅读了大量的文章和教程之后,我已经达到了可以让VSCode“听XDEBUG”的程度,但是我无法进行正常的VS风格的调试,在这里,我可以点击F5在我最喜欢的浏览器中启动当前网站,当它遇到断点时,它会进入VSCode,就像我们在完整的VisualStudio或Eclipse中所做的那样 我在我的机器上正确设置了以下内容: VSCode 1.25.1 XAMPP1.8 XDEBUG(已配置且正在工作) VSCode的PHP调试扩展 我

有人成功地配置了VSCode来调试基于Laravel的网站吗?在阅读了大量的文章和教程之后,我已经达到了可以让VSCode“听XDEBUG”的程度,但是我无法进行正常的VS风格的调试,在这里,我可以点击F5在我最喜欢的浏览器中启动当前网站,当它遇到断点时,它会进入VSCode,就像我们在完整的VisualStudio或Eclipse中所做的那样

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

  • VSCode 1.25.1
  • XAMPP1.8
  • XDEBUG(已配置且正在工作)
  • VSCode的PHP调试扩展
我不确定在我的
launch.json
中需要使用什么启动配置。PHP调试扩展附带的两种配置如下所示:

{
    "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
}           
虽然第一个配置工作正常(我可以在VSCode中以该模式开始调试,然后在浏览器中单独启动我的网站,它会遇到断点),但第二个配置失败。它告诉我它无法定位
Controller
类(这是一个Laravel框架类)。用名称空间限定类名也没有任何好处

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


有没有人成功地做到了这一点,并告诉我我在这里遗漏了什么?

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

  • 确保已在Apache服务器上设置并运行XDEBUG
  • 为您喜爱的浏览器安装调试器扩展。扩展可用于Chrome、Edge和FireFox(可以在VSCode中搜索和安装)
  • 设置
    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}"
            }
        ]
    }
    
  • 根据您的本地设置(如站点地址、xdebug端口等)更新上述配置
  • 按F5,调试会话将启动。浏览器将自动启动,您将能够点击断点
  • “第二个配置失败。它告诉我它找不到控制器类…”嗯。。。当然它会失败。您正试图直接执行控制器(或您正在处理的任何其他当前类)。。。绕过整个框架加载过程(换句话说,它不是通过标准的
    index.php
    )处理的,也没有composer的自动加载程序。如果您想从VSCode(调试器+在浏览器中打开URL)启动整个过程。。您必须在启动配置中硬编码URL(当然,如果可能的话)