在 VSCode 上调试 Laravel 应用程序
Debugging Laravel application on VSCode
有人成功配置 VSCode 来调试基于 Laravel 的网站吗?在看了很多文章和教程之后,我已经到了可以问 VSCode 到 "Listen to XDEBUG" 的地步,但是我一直无法做到 normal ] VS 风格的调试,我只需按 F5 即可在我最喜欢的浏览器中启动当前网站,它会在遇到断点时进入 VSCode,就像我们在完整的 Visual Studio 或 Eclipse 中所做的那样。
我在我的机器上正确设置了以下内容:
- VSCode 1.25.1
- XAMPP1.8
- XDEBUG(已配置并工作)
- PHP VSCode
的调试扩展
我不确定 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
class(这是一个 Laravel 框架 class)。使用命名空间限定 class 名称也没有任何好处。
我猜这与启动配置的设置方式有关。它试图将活动脚本作为一个独立的单元启动,因此无法找到位于不同文件中的框架 classes 的定义。我们必须以某种方式提供作为单个应用程序启动网站。
有没有人成功完成并告诉我我在这里缺少什么?
终于成功了。如果其他人需要的话,这里有一些东西。
确保您的 Apache 服务器上有 XDEBUG set up and running。
为您最喜欢的浏览器安装调试器扩展。扩展程序可用于 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,您的调试会话将开始。浏览器将自动启动,您将能够设置断点。
有人成功配置 VSCode 来调试基于 Laravel 的网站吗?在看了很多文章和教程之后,我已经到了可以问 VSCode 到 "Listen to XDEBUG" 的地步,但是我一直无法做到 normal ] VS 风格的调试,我只需按 F5 即可在我最喜欢的浏览器中启动当前网站,它会在遇到断点时进入 VSCode,就像我们在完整的 Visual Studio 或 Eclipse 中所做的那样。
我在我的机器上正确设置了以下内容:
- VSCode 1.25.1
- XAMPP1.8
- XDEBUG(已配置并工作)
- PHP VSCode 的调试扩展
我不确定 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
class(这是一个 Laravel 框架 class)。使用命名空间限定 class 名称也没有任何好处。
我猜这与启动配置的设置方式有关。它试图将活动脚本作为一个独立的单元启动,因此无法找到位于不同文件中的框架 classes 的定义。我们必须以某种方式提供作为单个应用程序启动网站。
有没有人成功完成并告诉我我在这里缺少什么?
终于成功了。如果其他人需要的话,这里有一些东西。
确保您的 Apache 服务器上有 XDEBUG set up and running。
为您最喜欢的浏览器安装调试器扩展。扩展程序可用于 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,您的调试会话将开始。浏览器将自动启动,您将能够设置断点。